-- Implementation for each state can be found in their respective -- submodules. module RPGEngine.Render ( initWindow , render ) where import RPGEngine.Render.Core ( Renderer(..) ) import RPGEngine.Data (Game(..), State (..)) import RPGEngine.Render.Menu( renderMenu ) import RPGEngine.Render.LevelSelection ( renderLevelSelection ) import RPGEngine.Render.Playing ( renderPlaying ) import RPGEngine.Render.Paused ( renderPaused ) import RPGEngine.Render.Win ( renderWin ) import RPGEngine.Render.Lose ( renderLose ) import Graphics.Gloss ( Display, text, color ) import Graphics.Gloss.Data.Picture (Picture, blank) import Graphics.Gloss.Data.Display (Display(..)) import RPGEngine.Render.ActionSelection (renderActionSelection) import RPGEngine.Config (textColor) ---------------------------------------------------------------------- -- Initialize a window to play in initWindow :: String -> (Int, Int) -> (Int, Int) -> Display initWindow = InWindow -- Render all different states render :: Game -> Picture render Game{ state = s@Menu } = renderMenu s render Game{ state = s@LevelSelection{} } = renderLevelSelection s render Game{ state = s@Playing{} } = renderPlaying s render Game{ state = s@Paused{} } = renderPaused s render Game{ state = s@Win } = renderWin s render Game{ state = s@Lose{} } = renderLose s render Game{ state = s@ActionSelection{}} = renderActionSelection s render Game{ state = Error message } = color textColor $ text message