Refactor framebuffer update

This commit is contained in:
2023-03-24 13:14:49 +00:00
parent bd9f32875e
commit 4d09927d42
9 changed files with 59 additions and 83 deletions
+18 -20
View File
@@ -27,9 +27,10 @@ import Music
import Preload
import Preload.Render
--import Render
import SDL (($=))
import qualified SDL
import qualified SDL.Mixer as Mix
import SDL (($=))
import Sound
import System.Directory
@@ -77,27 +78,25 @@ firstWorldLoad :: Configuration -> IO Universe
firstWorldLoad theConfig = do
SDL.cursorVisible $= False
pdata <- doPreload >>= applyWorldConfig theConfig
--return $ startNewGame $ Universe
cancontinue <- doesFileExist "saveSlot/0"
mseed <- loadSeed
let u = Universe
{ --{_uvWorld = initialWorld
_uvWorld = splashScreen
, _uvConfig = theConfig
, _preloadData = pdata
, _uvScreenLayers = []
, _uvIOEffects = return
, _uvTestString = testStringInit
, _uvSideEffects = mempty
, _uvCanContinue = cancontinue
, _uvMSeed = mseed
, _uvLastFrameTicks = 0
, _uvFrameTicks = 0
}
let u =
Universe
{ _uvWorld = splashScreen
, _uvConfig = theConfig
, _preloadData = pdata
, _uvScreenLayers = []
, _uvIOEffects = return
, _uvTestString = testStringInit
, _uvSideEffects = mempty
, _uvCanContinue = cancontinue
, _uvMSeed = mseed
, _uvLastFrameTicks = 0
, _uvFrameTicks = 0
}
return $
Universe
{ --{_uvWorld = initialWorld
_uvWorld = splashScreen
{ _uvWorld = splashScreen
, _uvConfig = theConfig
, _preloadData = pdata
, _uvScreenLayers = [splashMenu u]
@@ -115,8 +114,7 @@ theUpdateStep win = doSideEffects <=< updateRenderSplit win
updateRenderSplit :: SDL.Window -> Universe -> IO Universe
updateRenderSplit win u = do
let preData = _preloadData u
updateUniverse u `par` void (doDrawing win (_renderData preData) u)
updateUniverse u `par` void (doDrawing win u)
return $! updateUniverse u
playSoundUnlessRewinding :: Universe -> IO (M.Map SoundOrigin Sound)