38 lines
No EOL
1.2 KiB
Haskell
38 lines
No EOL
1.2 KiB
Haskell
-- Implementation for each state can be found in their respective
|
|
-- 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)
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
-- Initialize a window to play in
|
|
initWindow :: String -> (Int, Int) -> (Int, Int) -> Display
|
|
initWindow = InWindow
|
|
|
|
-- Initialize the game
|
|
initGame :: Game
|
|
initGame = Game {
|
|
state = Menu{ base = StateBase{ renderer = renderMenu, inputHandler = handleInputMenu }},
|
|
levels = [defaultLevel],
|
|
player = spawnPlayer defaultLevel defaultPlayer
|
|
}
|
|
|
|
-- Render all different states
|
|
render :: Game -> Picture
|
|
render g@Game{ state = state } = renderFunc g
|
|
where stateBase = base state
|
|
renderFunc = renderer stateBase |