Add new places; add music component; add audio module; add touch events; fixes

This commit is contained in:
obergodmar
2020-06-29 18:55:33 +03:00
parent 0b52c73cab
commit dea845a76f
53 changed files with 570 additions and 188 deletions
@@ -0,0 +1,42 @@
import { useEffect, useMemo } from 'react'
import { randomNumber, soundLoad, UI_MUSIC_VOLUME } from '../../utils'
import Sound from '../../modules/sound'
interface Props {
music: string[]
setPlaying: (value: boolean) => void
setCurrentPlaying: (value: Sound | undefined) => void
}
export const MusicComponent = ({ music, setPlaying, setCurrentPlaying }: Props) => {
const musicArray = useMemo(() => (
music.map(sound => soundLoad(sound, UI_MUSIC_VOLUME))
), [music])
useEffect(() => {
musicArray.forEach(sound => {
sound.audio.onplay = () => {
setPlaying(true)
setCurrentPlaying(sound)
}
sound.audio.onended = () => {
musicArray[randomNumber(0, musicArray.length)].playMusic()
}
})
setCurrentPlaying(musicArray[randomNumber(0, musicArray.length)])
return () => {
musicArray.forEach(({ audio }) => {
audio.onplay = null
audio.onended = null
audio.pause()
audio.currentTime = 0
})
setCurrentPlaying(undefined)
}
}, [musicArray, setPlaying, setCurrentPlaying])
return null
}
MusicComponent.displayName = 'MusicComponent'