From beecc1e2af08f81f5cb5d2ebb93aaef59b20fcd5 Mon Sep 17 00:00:00 2001 From: "Juan J. Martinez" Date: Sun, 5 Mar 2023 11:42:56 +0000 Subject: Exit stage WIP --- src/Game.hs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/Game.hs') diff --git a/src/Game.hs b/src/Game.hs index 52ba6a7..850d6ed 100644 --- a/src/Game.hs +++ b/src/Game.hs @@ -62,7 +62,8 @@ initialState m = lives = maxLives, totalLives = maxLives, hitDelay = hitDelay, - gameOverDelay = 0 + gameOverDelay = 0, + exit = False } main :: IO () @@ -155,7 +156,10 @@ gameLoop e = do SDL.rendererRenderTarget renderer $= Just canvas SDL.clear renderer - updatedEnv <- if state.gameOverDelay /= 1 then playLoop (updateState env) else gameOverLoop env + updatedEnv <- + if state.gameOverDelay /= 1 + then playLoop =<< updateState env + else gameOverLoop env SDL.rendererRenderTarget renderer $= Nothing SDL.clear renderer @@ -166,10 +170,13 @@ gameLoop e = do gameLoop updatedEnv where -- update state counters - updateState :: Env -> Env + updateState :: Env -> IO Env updateState env - | state.gameOverDelay > 1 = env {state = state {GS.gameOverDelay = state.gameOverDelay - 1}} - | otherwise = env + | state.gameOverDelay > 1 = pure env {state = state {GS.gameOverDelay = state.gameOverDelay - 1}} + | state.batteries == state.totalBatteries && not state.exit = do + es <- E.addExit env.entities + pure env {entities = es, state = state {GS.exit = True}} + | otherwise = pure env where state = env.state -- cgit v1.2.3