aboutsummaryrefslogtreecommitdiff
path: root/src/Game/Hud.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/Hud.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/Hud.hs')
-rw-r--r--src/Game/Hud.hs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Game/Hud.hs b/src/Game/Hud.hs
new file mode 100644
index 0000000..3b59558
--- /dev/null
+++ b/src/Game/Hud.hs
@@ -0,0 +1,22 @@
+module Game.Hud (Hud, mkHud, render) where
+
+import Data.IORef
+import qualified Game.Sprites as S
+import qualified Game.State as GS
+import qualified SDL
+
+data Hud = Hud
+ { sprite :: S.Sprite,
+ stateRef :: IORef GS.State
+ }
+
+mkHud :: S.SpriteSheet -> IORef GS.State -> IO Hud
+mkHud sprites stateRef = do
+ sprite <- S.get sprites "hud"
+ pure Hud {sprite = sprite, stateRef = stateRef}
+
+render :: SDL.Renderer -> Hud -> IO ()
+render renderer hud = do
+ state <- readIORef hud.stateRef
+ let xs = [0 .. state.totalBatteries - 1]
+ mapM_ (\x -> S.render renderer hud.sprite (4 + x * 8) 178 0 (if state.batteries <= x then 0 else 1)) xs