UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

43 lines 3.11 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc291bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFDcUIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFBO0lBNkNqRSxDQUFDO0lBM0NHLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7UUFDekIsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFDZiw2REFBNkQ7UUFDN0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQixDQUFDLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLEtBQWU7UUFDckIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuQyxJQUFJLENBQUMsS0FBSztnQkFBRSxTQUFRO1lBRXBCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVk7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUNULHFCQUFxQixJQUFJLHdDQUF3QyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3hGLElBQUksRUFBRTtpQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDcEIsQ0FBQTtZQUNELE9BQU07UUFDVixDQUFDO1FBRUQsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFDckIsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMxQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQztJQUNMLENBQUM7Q0FDSiJ9