blob: a5d3e22b761d8046d1363a6a24f4622a949aa416 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
module Game.Hud (Hud, mkHud, render, height) where
import qualified Game.Sprites as S
import qualified Game.State as GS
import qualified SDL
height :: Int
height = 16
newtype Hud = Hud S.Sprite
mkHud :: S.SpriteSheet -> IO Hud
mkHud sprites = do
Hud <$> S.get sprites "hud"
render :: SDL.Renderer -> Hud -> GS.State -> IO ()
render renderer (Hud sprite) state = do
let xs = [0 .. state.totalBatteries - 1]
in mapM_ (\x -> S.render renderer sprite (4 + x * 8) 4 0 (if state.batteries <= x then 0 else 1)) xs
let xs = [0 .. state.totalLives - 1]
in -- magic numbers
mapM_ (\x -> S.render renderer sprite (320 - 4 - state.totalLives * 8 + x * 8) 4 0 (if state.lives <= x then 2 else 3)) xs
|