Add (persistent) volume control

This commit is contained in:
jgk
2021-04-08 11:06:02 +02:00
parent f1214c0584
commit ea0dfbe1df
8 changed files with 76 additions and 54 deletions
+6 -4
View File
@@ -30,13 +30,14 @@ import Graphics.Rendering.OpenGL hiding (color, rotate, scale, translate)
import qualified SDL
import qualified SDL.Mixer as Mix
doPreload' :: IO (PreloadData a)
doPreload' = do
doPreload' :: Dodge.LoadConfig.Configuration -> IO (PreloadData a)
doPreload' config = do
lChunks <- loadSounds
lMusic <- loadMusic
let sData = SoundData {_loadedChunks = lChunks, _playingSounds = M.empty}
mData = MusicData {_loadedMusic = lMusic}
Mix.playMusic Mix.Forever (lMusic IM.! 0)
setVolume config
rData <- preloadRender
return $ PreloadData
{ _renderData = rData
@@ -49,11 +50,12 @@ main :: IO ()
main = do
(sizex,sizey) <- loadConfig
keyConfig <- loadKeyConfig
dodgeConfig <- loadDodgeConfig
setupLoop
(sizex,sizey)
(SDL.cursorVisible $= False >> doPreload' >>= resizeSpareFBO sizex sizey)
(SDL.cursorVisible $= False >> doPreload' dodgeConfig >>= resizeSpareFBO sizex sizey)
(\x -> (SDL.cursorVisible $= True) >> cleanUpPreload x)
(fmap (setWindowSize sizex sizey keyConfig) firstWorld)
(fmap (setWindowSize sizex sizey keyConfig . (config .~ dodgeConfig)) firstWorld)
( \preData w -> do
startTicks <- SDL.ticks
updateDodgeConfig w