33 lines
No EOL
1.3 KiB
Haskell
33 lines
No EOL
1.3 KiB
Haskell
module RPGEngine.Render.LevelSelection
|
|
( renderLevelSelection
|
|
) where
|
|
|
|
import RPGEngine.Config ( resolution, zoom )
|
|
import RPGEngine.Data ( Game (..), State (..) )
|
|
import RPGEngine.Data.Level ( getLevelList )
|
|
import RPGEngine.Render.Core ( Renderer )
|
|
|
|
import Graphics.Gloss
|
|
( pictures, text, translate, blank, Picture, color )
|
|
import Graphics.Gloss.Data.Picture (scale)
|
|
import RPGEngine.Input.Core (ListSelector (..))
|
|
import Graphics.Gloss.Data.Color (red)
|
|
|
|
------------------------------ 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 |