Refactor level/room generation modules

This commit is contained in:
jgk
2021-03-11 22:08:35 +01:00
parent 2d995339b9
commit e8e3dd8f50
17 changed files with 546 additions and 436 deletions
+47
View File
@@ -0,0 +1,47 @@
{-# LANGUAGE TemplateHaskell #-}
module Preload
where
import Picture.Preload
import Sound.Preload
import Control.Lens
import GHC.Word (Word32)
data PreloadData a = PreloadData
{ _renderData :: RenderData
, _soundData :: SoundData a
, _currentTime :: Word32
, _renderTime :: Word32
, _renderLighting :: Word32
, _renderPicture :: Word32
, _simTime :: Word32
, _mixerTime :: Word32
, _idleTime :: Word32
, _gcTime :: Word32
, _pokeTime :: Word32
}
makeLenses ''PreloadData
doPreload :: IO (PreloadData a)
doPreload = do
sData <- preloadSound
rData <- preloadRender
return $ PreloadData rData sData 0 0 0 0 0 0 0 0 0
cleanUpPreload :: PreloadData a -> IO ()
cleanUpPreload pd = do
cleanUpRenderPreload $ _renderData pd
cleanUpSoundPreload $ _soundData pd
showTiming :: PreloadData a -> IO ()
showTiming pd = do
putStrLn $ "Time rendering: " ++ show (_renderTime pd)
putStrLn $ "Time renderingLighting: " ++ show (_renderLighting pd)
putStrLn $ "Time renderingPicture: " ++ show (_renderPicture pd)
putStrLn $ "Time sim-ing: " ++ show (_simTime pd)
putStrLn $ "Time mixing: " ++ show (_mixerTime pd)
putStrLn $ "Time idle: " ++ show (_idleTime pd)
putStrLn $ "Time gc: " ++ show (_gcTime pd)
putStrLn $ "Time pokeing: " ++ show (_pokeTime pd)