Restructuring, #9
This commit is contained in:
parent
2055ef234e
commit
dab6fadad4
41 changed files with 941 additions and 680 deletions
|
@ -1,38 +1,21 @@
|
|||
-- Allows to render the played game
|
||||
|
||||
-- Implementation for each state can be found in their respective
|
||||
-- submodules.
|
||||
module RPGEngine.Render
|
||||
( initWindow
|
||||
, bgColor
|
||||
|
||||
, initGame
|
||||
, render
|
||||
) where
|
||||
|
||||
import RPGEngine.Data
|
||||
( State(..),
|
||||
Game(..), Player (..) )
|
||||
import RPGEngine.Render.Level
|
||||
( renderLevel )
|
||||
import Graphics.Gloss
|
||||
( white,
|
||||
pictures,
|
||||
text,
|
||||
Display(InWindow),
|
||||
Color,
|
||||
Picture,
|
||||
scale,
|
||||
translate )
|
||||
import RPGEngine.Render.Player (renderPlayer, focusPlayer)
|
||||
import RPGEngine.Render.GUI (renderGUI)
|
||||
import Graphics.Gloss.Data.Picture (color)
|
||||
import RPGEngine.Render.Core (overlay)
|
||||
import RPGEngine.Input.LvlSelect (getLvlList)
|
||||
import RPGEngine.Render.LvlSelect (renderLvlList)
|
||||
import RPGEngine.Render.Core ( Renderer(..) )
|
||||
|
||||
----------------------------- Constants ------------------------------
|
||||
|
||||
-- Game background color
|
||||
bgColor :: Color
|
||||
bgColor = white
|
||||
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)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
@ -40,43 +23,16 @@ bgColor = white
|
|||
initWindow :: String -> (Int, Int) -> (Int, Int) -> Display
|
||||
initWindow = InWindow
|
||||
|
||||
-- Render the game
|
||||
-- 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 = Menu } = renderMenu g
|
||||
render g@Game{ state = LvlSelect } = renderLevelSelection g
|
||||
render g@Game{ state = Playing } = renderPlaying g
|
||||
render g@Game{ state = Pause } = renderPause g
|
||||
render g@Game{ state = Win } = renderWin g
|
||||
render g@Game{ state = Lose } = renderLose g
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-- TODO
|
||||
renderMenu :: Game -> Picture
|
||||
renderMenu _ = text "[Press any key to start]"
|
||||
|
||||
-- TODO
|
||||
renderLevelSelection :: Game -> Picture
|
||||
renderLevelSelection _ = renderLvlList getLvlList
|
||||
|
||||
renderPlaying :: Game -> Picture
|
||||
renderPlaying g@Game{ playing = lvl, player = player } = pictures [
|
||||
renderLevel lvl,
|
||||
renderPlayer player,
|
||||
renderGUI g
|
||||
]
|
||||
|
||||
renderPause :: Game -> Picture
|
||||
renderPause g = pictures [renderPlaying g, pause]
|
||||
where pause = pictures [
|
||||
overlay,
|
||||
color white $ scale 0.5 0.5 $ text "[Press any key to continue]"
|
||||
]
|
||||
|
||||
-- TODO
|
||||
renderWin :: Game -> Picture
|
||||
renderWin _ = text "Win"
|
||||
|
||||
-- TODO
|
||||
renderLose :: Game -> Picture
|
||||
renderLose _ = text "Lose"
|
||||
render g@Game{ state = state } = renderFunc g
|
||||
where stateBase = base state
|
||||
renderFunc = renderer stateBase
|
Reference in a new issue