aboutsummaryrefslogtreecommitdiff
path: root/src/Game/Entities.hs
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2023-02-26 00:06:40 +0000
committerJuan J. Martinez <jjm@usebox.net>2023-02-26 00:06:40 +0000
commitb3e0ace3ca198cacd8d77c6ca0f2c457826dee63 (patch)
treed55b86d8347da910dd166f44b99e5b072f217c2d /src/Game/Entities.hs
parentc5b11b2c3acfd701fe5689bf0666a9adcbde8e4e (diff)
downloadspace-plat-hs-b3e0ace3ca198cacd8d77c6ca0f2c457826dee63.tar.gz
space-plat-hs-b3e0ace3ca198cacd8d77c6ca0f2c457826dee63.zip
Revisited the game over sequence
Diffstat (limited to 'src/Game/Entities.hs')
-rw-r--r--src/Game/Entities.hs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/Game/Entities.hs b/src/Game/Entities.hs
index 71f9791..a168e83 100644
--- a/src/Game/Entities.hs
+++ b/src/Game/Entities.hs
@@ -51,8 +51,12 @@ updateAll es = do
updated <- (updatedPlayer :) <$> traverse (updateFilter playerWasHit) others
-- collect new entities
new <- traverse (processSpawn es.sprites) (concatMap (\e -> e.spawns) updated)
+ -- is the player dead?
+ updated' <- do
+ s <- readIORef es.state
+ pure $ if s.lives == 0 && updatedPlayer.dir /= Dying then (head updated) {dir = Dying, gravity = gravityUp} : tail updated else updated
-- clear spawns (new entities), filter out destroyed entities, and add the new ones
- pure es {entities = map (\e -> e {spawns = []}) (filter (\e -> not e.destroy) updated) ++ new}
+ pure es {entities = map (\e -> e {spawns = []}) (filter (\e -> not e.destroy) updated') ++ new}
where
player = head es.entities
others = tail es.entities