@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
43 lines • 3.12 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc291bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFDcUIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFBO0lBaURqRSxDQUFDO0lBL0NHLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7UUFDekIsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFDZiw2REFBNkQ7UUFDN0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FDVCxvQ0FBb0MsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUNqRSxDQUFBO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQixDQUFDLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLEtBQWU7UUFDckIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuQyxJQUFJLENBQUMsS0FBSztnQkFBRSxTQUFRO1lBRXBCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVk7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUNULHFCQUFxQixJQUFJLHdDQUF3QyxLQUFLLENBQUMsRUFBRSxDQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUNyQjtpQkFDSSxJQUFJLEVBQUU7aUJBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3BCLENBQUE7WUFDRCxPQUFNO1FBQ1YsQ0FBQztRQUVELEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO1FBQ3JCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNoQixDQUFDO0lBRUQsS0FBSztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDMUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0NBQ0oifQ==