32 lines
No EOL
1.2 KiB
Haskell
32 lines
No EOL
1.2 KiB
Haskell
module RPGEngine.Render.LevelSelection
|
|
( renderLevelSelection
|
|
) where
|
|
|
|
import RPGEngine.Render.Core (Renderer)
|
|
|
|
import RPGEngine.Config (resolution, zoom, uizoom, textColor, selectionColor )
|
|
import RPGEngine.Data (State (..))
|
|
|
|
import Graphics.Gloss ( pictures, color, text, translate, blank )
|
|
import Graphics.Gloss.Data.Color (red)
|
|
import Graphics.Gloss.Data.Picture (scale)
|
|
import RPGEngine.Input.Core (ListSelector(..))
|
|
|
|
------------------------------ Exported ------------------------------
|
|
|
|
renderLevelSelection :: Renderer State
|
|
renderLevelSelection state = result
|
|
where result = renderLevelList state
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
renderLevelList :: Renderer State
|
|
renderLevelList (LevelSelection list selector) = everything
|
|
where everything = pictures $ map render entries
|
|
sel = selection selector
|
|
entries = zip [0::Int .. ] list
|
|
render (i, path) | i == sel = color selectionColor $ make (i, path)
|
|
| otherwise = color textColor $ make (i, path)
|
|
make (i, path) = scale uizoom uizoom $ translate 0 (offset i) $ text path
|
|
offset i = negate (250 * uizoom * fromIntegral i)
|
|
renderLevelList _ = blank |