From f0785650c52bf747fe6f5be55292ae129af15d6f Mon Sep 17 00:00:00 2001 From: Kevin Ngo Date: Tue, 16 Oct 2018 23:06:20 -0700 Subject: [PATCH] store song duration and length in state --- src/components/beat-loader.js | 1 + src/components/song-preview.js | 2 ++ src/state/index.js | 11 +++++++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/beat-loader.js b/src/components/beat-loader.js index 163f508..31bda80 100644 --- a/src/components/beat-loader.js +++ b/src/components/beat-loader.js @@ -97,6 +97,7 @@ AFRAME.registerComponent('beat-loader', { */ handleBeats: function (beatData) { this.el.sceneEl.emit('beatloaderfinish', beatData, false); + // Reset variables used during playback. // Beats spawn ahead of the song and get to the user in sync with the music. this.beatsTimeOffset = this.data.beatAnticipationTime * 1000; diff --git a/src/components/song-preview.js b/src/components/song-preview.js index a7d45be..d8f8f53 100644 --- a/src/components/song-preview.js +++ b/src/components/song-preview.js @@ -177,6 +177,8 @@ AFRAME.registerComponent('song-preview-system', { this.fadeIn(); this.updateAnalyser(); + this.el.sceneEl.emit('menuselectedchallengesonglength', this.audio.duration, false); + // Prefetch buffer for playing. if (audioanalyser.xhr) { audioanalyser.xhr.abort(); } audioanalyser.fetchAudioBuffer(utils.getS3FileUrl(challengeId, 'song.ogg')); diff --git a/src/state/index.js b/src/state/index.js index 5c65df5..d540f6b 100644 --- a/src/state/index.js +++ b/src/state/index.js @@ -30,7 +30,8 @@ AFRAME.registerState({ isLoading: false, isBeatsPreloaded: false, songName: '', - songSubName: '' + songSubName: '', + songLength: 0 }, damage: 0, inVR: false, @@ -45,6 +46,7 @@ AFRAME.registerState({ menuDifficulties: [], menuSelectedChallenge: { author: '', + bpm: 0, difficulty: '', downloads: '', downloadsText: '', @@ -52,6 +54,7 @@ AFRAME.registerState({ index: -1, image: '', songName: '', + songLength: 0, songSubName: '' }, multiplierText: '1x', @@ -111,7 +114,7 @@ AFRAME.registerState({ takeDamage(state); }, - beatloaderfinish: (state) => { + beatloaderfinish: (state, payload) => { state.challenge.isLoading = false; }, @@ -187,6 +190,10 @@ AFRAME.registerState({ state.menuSelectedChallenge.difficulty = difficulty; }, + menuselectedchallengesonglength: (state, seconds) => { + state.menuSelectedChallenge.songLength = seconds; + }, + minehit: state => { takeDamage(state); },