aboutsummaryrefslogtreecommitdiff
path: root/src/Game/Map.hs
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2023-02-15 22:53:22 +0000
committerJuan J. Martinez <jjm@usebox.net>2023-02-15 22:53:22 +0000
commit11120a24b6927073d55d2e56b4b911817dedaae2 (patch)
tree0c591330afba9f37a4ff0110a022b213aedb31e0 /src/Game/Map.hs
parent6f2644afcb52e4cfb60169de2cb3efdff62b17b2 (diff)
downloadspace-plat-hs-11120a24b6927073d55d2e56b4b911817dedaae2.tar.gz
space-plat-hs-11120a24b6927073d55d2e56b4b911817dedaae2.zip
Game state, HUD, ... WIP
Exploring ideas.
Diffstat (limited to 'src/Game/Map.hs')
-rw-r--r--src/Game/Map.hs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/Game/Map.hs b/src/Game/Map.hs
index 3855d16..ee30437 100644
--- a/src/Game/Map.hs
+++ b/src/Game/Map.hs
@@ -2,9 +2,11 @@ module Game.Map
( Map (..),
Object (..),
objects,
+ totalBatteries,
load,
render,
isBlocked,
+ isPlayer,
)
where
@@ -142,6 +144,18 @@ isBlocked (Map (MapData mapWidth _ ts _ blocked _) _) x y =
objects :: Map -> [Object]
objects (Map md _) = md.objects
+isPlayer :: Object -> Bool
+isPlayer (PlayerEntity _ _) = True
+isPlayer _ = False
+
+-- | Return the number of batteries in a map.
+totalBatteries :: Map -> Int
+totalBatteries m = length $ filter isBattery (objects m)
+ where
+ isBattery :: Object -> Bool
+ isBattery (BatteryEntity _ _) = True
+ isBattery _ = False
+
-- | Renders a map.
render :: SDL.Renderer -> Map -> IO ()
render renderer (Map mapData tex) = do