diff options
author | Juan J. Martinez <jjm@usebox.net> | 2023-02-15 22:53:22 +0000 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2023-02-15 22:53:22 +0000 |
commit | 11120a24b6927073d55d2e56b4b911817dedaae2 (patch) | |
tree | 0c591330afba9f37a4ff0110a022b213aedb31e0 /src/Game/Hud.hs | |
parent | 6f2644afcb52e4cfb60169de2cb3efdff62b17b2 (diff) | |
download | space-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.hs | 22 |
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 |