diff options
author | Juan J. Martinez <jjm@usebox.net> | 2023-05-16 22:13:37 +0100 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2023-05-16 22:13:37 +0100 |
commit | 5b13a8c276199f3ccdfdcb0d96dd7631b7e1b1fb (patch) | |
tree | f3d26b679325aeffe11eed690921a1d130a057b1 /src/Game.hs | |
parent | bce1f36c1e1507e6c503f42c9ae0285d05b52619 (diff) | |
download | space-plat-hs-5b13a8c276199f3ccdfdcb0d96dd7631b7e1b1fb.tar.gz space-plat-hs-5b13a8c276199f3ccdfdcb0d96dd7631b7e1b1fb.zip |
Use play state instead of level complete, that includes game over
Diffstat (limited to 'src/Game.hs')
-rw-r--r-- | src/Game.hs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/Game.hs b/src/Game.hs index 50d9dc1..7ed7ade 100644 --- a/src/Game.hs +++ b/src/Game.hs @@ -155,11 +155,9 @@ gameLoop e = do SDL.rendererRenderTarget renderer $= Just canvas SDL.clear renderer - updatedEnv <- - if state.gameOverDelay /= 1 - then playLoop updatedToasterEnv - else gameOverLoop updatedToasterEnv - + updatedEnv <- case state.playState of + GS.GameOver -> gameOverLoop updatedToasterEnv + _ -> playLoop updatedToasterEnv T.render renderer updatedEnv.toaster SDL.rendererRenderTarget renderer $= Nothing @@ -199,11 +197,16 @@ playLoop e = do -- update state counters, etc updateState :: Env -> IO Env updateState env - | state.gameOverDelay > 1 = pure env {state = state {GS.gameOverDelay = state.gameOverDelay - 1}} + | state.gameOverDelay > 0 = do + let delay = state.gameOverDelay - 1 + pure $ + if delay > 0 + then env {state = state {GS.gameOverDelay = delay}} + else env {state = state {GS.playState = GS.GameOver}} | state.batteries == state.totalBatteries && not state.exit = do es <- E.addExit env.entities x (y - 8) -- adjusted to player's height pure env {entities = es, state = state {GS.exit = True}} - | state.levelCompleted == GS.ExitDone = do + | state.playState == GS.ExitDone = do map' <- M.load (env.mapList !! (env.state.currentLevel + 1)) env.tsTexture entities <- E.mkEntities env.sprites map' env.controlsRef pure $ |