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.hs

39 lines
No EOL
1.5 KiB
Haskell

-- 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