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 Game renderLevelSelection Game{ state = 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