From 24845a3137df47b5458d4a3da86d3f0ccac863b8 Mon Sep 17 00:00:00 2001 From: Chris Blanchard Date: Sun, 4 Oct 2015 14:01:59 +0100 Subject: [PATCH] Fix sound controller --- lib/react/sound.jsx | 80 +++++++++++++++++++++++++++++++++++++++++++++ public/js/helper.js | 78 ------------------------------------------- 2 files changed, 80 insertions(+), 78 deletions(-) diff --git a/lib/react/sound.jsx b/lib/react/sound.jsx index 80a59c5..dd7c7a4 100644 --- a/lib/react/sound.jsx +++ b/lib/react/sound.jsx @@ -1,3 +1,83 @@ +class SoundController { + constructor () { + if (Howl === undefined) { + throw new Error("Howl.js required to created sound controller"); + } + + this.MINIMUM_PLAY_INTERVAL = 120000; + + this.playGatherMusic = _.throttle(() => { + this.gather.music.play(); + }, this.MINIMUM_PLAY_INTERVAL); + + this.isMuted = Howler._muted; + + this.volume = Howler._volume; + + this.tunes = { + "classic": { + description: "Classic", + url: 'http://www.ensl.org/sounds/gather-1.mp3' + }, + "eyeofthegorgie": { + description: "Eye of the Gorgie", + url: 'http://www.ensl.org/files/audio/eyeofthegorgie.mp3' + } + } + + this.setupGatherMusic("classic"); + } + + volume(val) { + if (typeof val === 'number' && Math.abs(val) <= 1) { + this.volume = val; + return Howler.volume(val) + } + } + + mute() { + this.isMuted = true; + return Howler.mute(); + } + + unMute() { + this.isMuted = false; + return Howler.unmute(); + } + + play(music) { + if (this.gather && this.gather.music) return this.gather.music.play(); + } + + stop(music) { + if (this.gather && this.gather.music) return this.gather.music.stop(); + } + + setupGatherMusic (musicName) { + let self = this; + let gatherMusic = this.tunes[musicName]; + + if (!gatherMusic) return; + if (self.gather && self.gather.name === musicName) return; + + // Stop if already playing + if (self.gather && self.gather.music) { + self.gather.music.stop(); + } + + let tune = self.tunes[musicName]; + self.gather = { + name: musicName, + description: tune.description, + url: tune.url, + music: new Howl({ + urls: [tune.url] + }) + }; + } +} + + var SoundPanel = React.createClass({ mute() { this.props.soundController.mute(); diff --git a/public/js/helper.js b/public/js/helper.js index b756777..a732454 100644 --- a/public/js/helper.js +++ b/public/js/helper.js @@ -36,81 +36,3 @@ var rankVotes = function (votes, candidates) { }); }; -class SoundController { - constructor () { - if (Howl === undefined) { - throw new Error("Howl.js required to created sound controller"); - } - - this.MINIMUM_PLAY_INTERVAL = 120000; - - this.playGatherMusic = _.throttle(() => { - this.gather.music.play(); - }, this.MINIMUM_PLAY_INTERVAL); - - this.isMuted = Howler._muted; - - this.volume = Howler._volume; - - this.tunes = { - "classic": { - description: "Classic", - url: 'http://www.ensl.org/sounds/gather-1.mp3' - }, - "eyeofthegorgie": { - description: "Eye of the Gorgie", - url: 'http://www.ensl.org/files/audio/eyeofthegorgie.mp3' - } - } - - this.setupGatherMusic("classic"); - } - - volume(val) { - if (typeof val === 'number' && Math.abs(val) <= 1) { - this.volume = val; - return Howler.volume(val) - } - } - - mute() { - this.isMuted = true; - return Howler.mute(); - } - - unMute() { - this.isMuted = false; - return Howler.unmute(); - } - - play(music) { - if (this.gather && this.gather.music) return this.gather.music.play(); - } - - stop(music) { - if (this.gather && this.gather.music) return this.gather.music.stop(); - } - - setupGatherMusic (musicName) { - let self = this; - let gatherMusic = this.tunes[musicName]; - - if (!gatherMusic) return; - if (self.gather && self.gather.name === musicName) return; - - // Stop if already playing - if (self.gather && self.gather.music) { - self.gather.music.stop(); - } - - let tune = self.tunes[musicName]; - self.gather = { - name: musicName, - description: tune.description, - url: tune.url, - music: new Howl({ - urls: [tune.url] - }) - }; - } -}