61 lines
2.7 KiB
Haskell
61 lines
2.7 KiB
Haskell
module Dodge.Render.MenuScreen
|
|
( menuScreen
|
|
)
|
|
where
|
|
import Dodge.Data
|
|
import Dodge.Base (halfWidth,halfHeight)
|
|
|
|
import Picture
|
|
|
|
menuScreen :: World -> Picture
|
|
menuScreen w = case _menuState w of
|
|
InGame -> blank
|
|
LevelMenu x ->
|
|
pictures [--color (withAlpha 0.5 black) $ polygon $ screenBox w
|
|
tst (-100) 100 0.4 ("LEVEL "++show x)
|
|
,controlsList
|
|
]
|
|
PauseMenu -> pictures
|
|
[color (withAlpha 0.5 black) $ polygon $ screenBox w
|
|
,tst (-100) 100 0.4 "PAUSED"
|
|
,tst (-100) 50 0.2 "n - new level"
|
|
,tst (-100) 0 0.2 "r - restart"
|
|
,tst (-100) (-50) 0.2 "o - options"
|
|
, controlsList
|
|
]
|
|
GameOverMenu -> pictures [color (withAlpha 0.5 black) $ polygon $ screenBox w
|
|
,tst (-100) 100 0.4 "GAME OVER"
|
|
,tst (-100) 50 0.2 "n - new level"
|
|
,tst (-100) 0 0.2 "r - restart"
|
|
,tst (-100) (-50) 0.2 "o - options"
|
|
,controlsList
|
|
]
|
|
where tst x y sc t = translate x y $ scale sc sc $ color white $ text t
|
|
|
|
controlsList = pictures [tst (-250) (-130) 0.15 "controls:"
|
|
,tst (-150) (-130) 0.15 "wasd"
|
|
,tst 0 (-130) 0.15 "movement"
|
|
,tst (-150) (-160) 0.15 "[rmb]"
|
|
,tst 0 (-160) 0.15 "aim"
|
|
,tst (-150) (-190) 0.15 "[rmb+lmb]"
|
|
,tst 0 (-190) 0.15 "shoot or use item"
|
|
,tst (-150) (-220) 0.15 "[wheelscroll]"
|
|
,tst 0 (-220) 0.15 "select item"
|
|
,tst (-150) (-250) 0.15 "[space]"
|
|
,tst 0 (-250) 0.15 "pickup item"
|
|
,tst (-150) (-280) 0.15 "f"
|
|
,tst 0 (-280) 0.15 "drop item"
|
|
,tst (-150) (-310) 0.15 "cp[esc]"
|
|
,tst 0 (-310) 0.15 "pause"
|
|
,tst (-150) (-340) 0.15 "qe[lmb]"
|
|
,tst 0 (-340) 0.15 "rotate camera"
|
|
]
|
|
where tst x y sc t = translate x y $ scale sc sc $ color white $ text t
|
|
|
|
screenBox w = [ (halfWidth w, halfHeight w)
|
|
, (-halfWidth w, halfHeight w)
|
|
, (-halfWidth w,-halfHeight w)
|
|
, ( halfWidth w,-halfHeight w)
|
|
]
|
|
|