39 lines
No EOL
1.5 KiB
Haskell
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 |