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