blob: bdfa790389946cdfa69acd3fac510069425c2794 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import { System, SystemNames } from ".";
import { Music as GameMusic, SOUNDS } from "../config";
export class Music extends System {
private songs: string[] = [];
private currentSong?: string;
constructor() {
super(SystemNames.Music);
this.songs = Array.from(GameMusic.states!.values()).map(
(state) => state.name
);
}
private chooseRandomSong() {
return this.songs[Math.floor(Math.random() * this.songs.length)];
}
public playNext() {
let nextSong = this.chooseRandomSong();
while (nextSong === this.currentSong) {
nextSong = this.chooseRandomSong();
}
this.currentSong = nextSong;
SOUNDS.get(this.currentSong)?.play();
// when done, play next song
SOUNDS.get(this.currentSong)?.addEventListener("ended", () => {
this.playNext();
});
}
public update(_dt: number) {
if (!this.currentSong) {
this.playNext();
}
}
}
|