Reimplement continuous sounds (package dependencies should be reworked)

This commit is contained in:
jgk
2021-02-23 20:51:05 +01:00
parent 93ab10e77e
commit 47eb0b378b
5 changed files with 63 additions and 8 deletions
+17 -4
View File
@@ -1,16 +1,28 @@
{-# LANGUAGE TemplateHaskell #-}
module Sound.Preload
where
import qualified SDL.Mixer as Mix
import qualified Data.IntMap as IM
import qualified Data.Map as M
type SoundData = IM.IntMap Mix.Chunk
import Control.Lens
cleanUpSoundPreload :: SoundData -> IO ()
import Dodge.Data
data SoundData a = SoundData
{_loadedChunks :: IM.IntMap Mix.Chunk
,_playingSounds :: M.Map a Sound
}
makeLenses ''SoundData
cleanUpSoundPreload :: SoundData a -> IO ()
cleanUpSoundPreload sd = Mix.closeAudio
preloadSound :: IO SoundData
preloadSound :: IO (SoundData a)
preloadSound = do
Mix.openAudio Mix.defaultAudio 256
-- pFireSound <- Mix.loadWAV "./data/sound/tap3.wav"
@@ -56,7 +68,7 @@ preloadSound = do
glass3' <- Mix.load "./data/sound/Small-Piece-Of-Glass-Shattering-A3.wav"
glass4' <- Mix.load "./data/sound/Small-Piece-Of-Glass-Shattering-A4.wav"
foamSpray' <- Mix.load "./data/sound/foamSprayLoop.wav"
return $ IM.fromList $ zip [0..]
let loadedS = IM.fromList $ zip [0..]
$ [ pFireSound
, click
, reloadSound'
@@ -100,3 +112,4 @@ preloadSound = do
, glass4' --40
, foamSpray'
]
return $ SoundData {_loadedChunks = loadedS, _playingSounds = M.empty}