aboutsummaryrefslogtreecommitdiff
path: root/src/Game.hs
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2023-05-16 22:13:37 +0100
committerJuan J. Martinez <jjm@usebox.net>2023-05-16 22:13:37 +0100
commit5b13a8c276199f3ccdfdcb0d96dd7631b7e1b1fb (patch)
treef3d26b679325aeffe11eed690921a1d130a057b1 /src/Game.hs
parentbce1f36c1e1507e6c503f42c9ae0285d05b52619 (diff)
downloadspace-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.hs17
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 $