@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
43 lines • 3.11 kB
JavaScript
export class TgdSound {
constructor() {
this.sounds = new Map();
}
add(name, url) {
this.remove(name);
const audio = new Audio();
audio.src = url;
// eslint-disable-next-line unicorn/prefer-add-event-listener
audio.onerror = () => {
console.error(`[TgdSound] Unable to load sound "${name}" from URL "${url}"!`);
this.remove(name);
};
this.sounds.set(name, audio);
}
remove(...names) {
for (const name of names) {
const sound = this.sounds.get(name);
if (!sound)
continue;
sound.pause();
this.sounds.delete(name);
}
}
play(name) {
const sound = this.sounds.get(name);
if (!sound) {
console.error(`[TgdSound] Sound "${name}" does not exist!\nAvailable sounds: ${Array.of(this.sounds.keys())
.sort()
.join(", ")}`);
return;
}
sound.currentTime = 0;
sound.play();
}
clear() {
const names = this.sounds.keys().toArray();
for (const name of names) {
this.remove(name);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc291bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFDcUIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFBO0lBNkNqRSxDQUFDO0lBM0NHLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7UUFDekIsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFDZiw2REFBNkQ7UUFDN0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQixDQUFDLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLEtBQWU7UUFDckIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuQyxJQUFJLENBQUMsS0FBSztnQkFBRSxTQUFRO1lBRXBCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVk7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUNULHFCQUFxQixJQUFJLHdDQUF3QyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3hGLElBQUksRUFBRTtpQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDcEIsQ0FBQTtZQUNELE9BQU07UUFDVixDQUFDO1FBRUQsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFDckIsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMxQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQztJQUNMLENBQUM7Q0FDSiJ9