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)
|
|
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{ levelList = list, selector = selector } = everything
|
|
where everything = pictures $ map render entries
|
|
sel = selection selector
|
|
entries = zip [0::Int .. ] list
|
|
render (i, path) | i == sel = color red $ scale zoomed zoomed $ translate 0 (offset i) $ text path
|
|
| otherwise = scale zoomed zoomed $ translate 0 (offset i) $ text path
|
|
zoomed = 0.1 * zoom
|
|
offset i = negate (2 * resolution * zoom * fromIntegral i)
|
|
renderLevelList _ = blank |