"use strict" let audioOptions = { sound: true, music: true }; class Sound{ constructor(type){ this.sound = random(audio.sound[type]); } static Won(){return "won";} static Lost(){return "lost";} static Coin(){return "coin";} static Jump(){return "jump";} play(){ this.sound.play(); updateVolume(); } } function toggleSounds(){ audioOptions.sound = !audioOptions.sound; $("#soundVolume").prop("disabled", !audioOptions.sound); updateVolume(); } function toggleMusic(){ audioOptions.music = !audioOptions.music; $("#musicVolume").prop("disabled", !audioOptions.music); updateVolume(); } function updateVolume(){ let soundVolume = $("#soundVolume").val() / 100, musicVolume = $("#musicVolume").val() / 100; soundVolume = !audioOptions.sound ? 0 : soundVolume; musicVolume = !audioOptions.music ? 0 : musicVolume; setVolume("sound", soundVolume); setVolume("music", musicVolume); } function getVolume(type){ let val = $("#" + type + "Volume").val(); return val / 100; } function setVolume(key, volume){ for (let prop in audio){ if (prop === key){ for (let type in audio[prop]){ let audios = audio[prop][type]; for (let audio of audios){ audio.setVolume(volume); } } } } } function resetMusics(){ for (let type in audio.music){ let audios = audio.music[type]; for (let audio of audios){ audio.jump(); audio.pause(); } } } function loadAudioFiles(loadedCallback){ soundFormats("mp3", "wav"); audio = JSON.parse(JSON.stringify(settings.audio)); loader = new Loader(Loader.Circle(), "Loading Assets...", loadedCallback); let count = 0, index = 0; for (let prop in audio){ let type = audio[prop]; for (let key in type){ let files = type[key]; for (let file of files){ count++; } } } for (let prop in audio){ let type = audio[prop]; for (let key in type){ let files = type[key]; for (let file of files){ loadSound(file, updateProgress); function updateProgress(song){ files[files.indexOf(file)] = song; index++; loader.updateProgress(index / count, song.file); } } } } } function audioFilesLoaded(){ updateVolume(); loadNewGame(); }