/********************************************* * Sound Handler ********************************************* * * Developed by: Pau Sanchez * * website: pausanchezv.com * Github: github.com/pausanchezv * Linkedin: linkedin.com/in/pausanchezv * Twitter: twitter.com/pausanchezv * Facebook: facebook.com/pausanchezv * * All rights reserved. - Barcelona 2018 - * *********************************************/ /** * Sound handler Static Class */ var soundHandler = { // Stop all sounds stopSounds: false, /** * Play * @param obj */ play: function(obj) { if (!this.stopSounds) { obj.currentTime = 0; obj.play(); } }, /** * Pause * @param obj */ pause: function(obj) { obj.pause(); }, /** * Stop * @param obj */ stop: function(obj) { this.pause(obj); obj.currentTime = 0; }, /** * set volume * @param obj * @param volume */ setVolume: function(obj, volume) { obj.volume = volume; }, /** * Add music loop * @param obj */ addLoop: function(obj) { obj.addEventListener('ended', function() { this.play(); }, false); }, /** * Add event file * @param obj * @param file */ relateFile: function(obj, file) { obj.setAttribute('src', file); } }; /** * Quit volume */ var volumeOff = function() { for (var s in musics) { soundHandler.setVolume(musics[s], 0.0); } for (var s in effects) { soundHandler.setVolume(effects[s], 0.0); } }; /** * Add volume */ var volumeOn = function() { for (var s in musics) { soundHandler.setVolume(musics[s], 1); } for (var s in effects) { soundHandler.setVolume(effects[s], 1); } }; /** * Game's musics */ var musics = { loop: document.createElement('audio') }; /** * Game's sound effects */ var effects = { place: document.createElement('audio'), completed: document.createElement('audio'), placeFigure: document.createElement('audio'), startSolver: document.createElement('audio') }; // effects soundHandler.relateFile(effects.place, 'https://puzzle.pausanchezv.com/puzzle-x/assets/audio/place-square.wav'); soundHandler.relateFile(effects.completed, 'https://puzzle.pausanchezv.com/puzzle-x/assets/audio/puzzle-completed.mp3'); soundHandler.relateFile(effects.placeFigure, 'https://puzzle.pausanchezv.com/puzzle-x/assets/audio/place-figure.wav'); soundHandler.relateFile(effects.startSolver, 'https://puzzle.pausanchezv.com/puzzle-x/assets/audio/start-solver.wav'); // musics soundHandler.relateFile(musics.loop, 'https://puzzle.pausanchezv.com/puzzle-x/assets/audio/loop.mp3'); soundHandler.addLoop(musics.loop);