From 280d0ab291779ba27059f4e596162509528b5e6b Mon Sep 17 00:00:00 2001 From: johanwen Date: Tue, 26 Oct 2021 09:19:52 +0200 Subject: [PATCH 1/2] preload sounds --- src/sound/soundReducer.js | 14 ++++++++++---- src/sound/sounds.js | 16 ++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/sound/soundReducer.js b/src/sound/soundReducer.js index 2d48424..5b03b32 100644 --- a/src/sound/soundReducer.js +++ b/src/sound/soundReducer.js @@ -2,6 +2,14 @@ import actions from '../actionTypes'; import { finishedSounds } from './../sound/sounds'; import { Howl } from 'howler'; +const importAll = require => + require.keys().map(sound => { + const soundFile = require(sound); + return [sound.replace(/^\.\/(\w+)_?.+/, '$1'), new Howl({ src: soundFile, loop: false })]; + }); + +const soundMap = Object.fromEntries(importAll(require.context('./../assets/sounds/', false, /.mp3$/))); + export const activeSoundSelector = state => { return state.sounds.filename; }; @@ -12,10 +20,8 @@ const defaultSoundState = { // TODO: Preload these to evade lag before playing a sound const playFinishedSound = filename => { - new Howl({ - src: [require(`./../assets/sounds/${filename}`)], - loop: false, - }).play(); + const sound = soundMap[filename]; + sound.play(); }; export default (state = defaultSoundState, action) => { diff --git a/src/sound/sounds.js b/src/sound/sounds.js index 2c00abd..49787d3 100644 --- a/src/sound/sounds.js +++ b/src/sound/sounds.js @@ -3,34 +3,34 @@ import _ from 'lodash'; export const finishedSounds = [ { displayName: 'Lightsaber', - filename: 'lightsaber.mp3', + filename: 'lightsaber', }, { displayName: 'Wakawaka', - filename: 'wakawaka.mp3', + filename: 'wakawaka', }, { displayName: 'Chewbacca growl', - filename: 'chewbacca.mp3', + filename: 'chewbacca', }, { displayName: '"Hadouken!"', - filename: 'hadouken.mp3', + filename: 'hadouken', }, { displayName: '"Bestefar!"', - filename: _.sample(['bestefar_0.mp3', 'bestefar_1.mp3']), + filename: _.sample(['bestefar_0', 'bestefar_1']), }, { displayName: 'Cow mooing', - filename: 'cow.mp3', + filename: 'cow', }, { displayName: 'Alfons: "Jag ska bara.."', - filename: _.sample(['jag_ska_bara_0.mp3', 'jag_ska_bara_1.mp3', 'jag_ska_bara_2.mp3']), + filename: _.sample(['jag_ska_bara_0', 'jag_ska_bara_1', 'jag_ska_bara_2']), }, { displayName: 'Record scratch', - filename: 'record_scratch.mp3', + filename: 'record_scratch', }, ]; From 924bee427c1da24b0d004a5f3f2a564a16fecb60 Mon Sep 17 00:00:00 2001 From: johanwen Date: Tue, 26 Oct 2021 10:29:31 +0200 Subject: [PATCH 2/2] remove comment --- src/sound/soundReducer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/sound/soundReducer.js b/src/sound/soundReducer.js index 5b03b32..08e468b 100644 --- a/src/sound/soundReducer.js +++ b/src/sound/soundReducer.js @@ -18,7 +18,6 @@ const defaultSoundState = { filename: finishedSounds[0].filename, }; -// TODO: Preload these to evade lag before playing a sound const playFinishedSound = filename => { const sound = soundMap[filename]; sound.play();