Fix dependency loop

This commit is contained in:
Tibo De Peuter 2022-12-22 13:31:46 +01:00
parent b7278d6afc
commit f529fc5237
25 changed files with 251 additions and 199 deletions

View file

@ -2,20 +2,22 @@
-- submodules.
module RPGEngine.Render
( initWindow
, initGame
, render
) where
import RPGEngine.Render.Core ( Renderer(..) )
import RPGEngine.Data ( State(..), Game(..), StateBase(..) )
import Graphics.Gloss ( Display )
import Graphics.Gloss.Data.Display ( Display(InWindow) )
import Graphics.Gloss.Data.Picture (Picture)
import RPGEngine.Data.Default (defaultLevel, defaultPlayer)
import RPGEngine.Input.Playing (spawnPlayer)
import RPGEngine.Render.Menu (renderMenu)
import RPGEngine.Input.Menu (handleInputMenu)
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)
import Graphics.Gloss.Data.Picture (Picture, blank)
import Graphics.Gloss.Data.Display (Display(..))
----------------------------------------------------------------------
@ -23,17 +25,12 @@ import RPGEngine.Input.Menu (handleInputMenu)
initWindow :: String -> (Int, Int) -> (Int, Int) -> Display
initWindow = InWindow
-- Initialize the game
initGame :: Game
initGame = Game {
state = Menu{ base = StateBase{
renderer = renderMenu,
inputHandler = handleInputMenu
}}
}
-- Render all different states
render :: Game -> Picture
render g@Game{ state = state } = renderFunc state
where stateBase = base state
renderFunc = renderer stateBase
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 _ = blank