UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

43 lines 3.12 kB
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==