This repository has been archived on 2023-06-24. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
2022FuncProg-project3-RPGEn.../lib/RPGEngine/Render/LevelSelection.hs

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