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

64 lines
No EOL
1.5 KiB
Haskell

-- Allows to render the played game
module RPGEngine.Render
( initWindow
, bgColor
, render
) where
import RPGEngine.Data
( State(..),
Game(..) )
import RPGEngine.Render.Level
( renderLevel )
import Graphics.Gloss
( white, pictures, text, Display(InWindow), Color, Picture )
import RPGEngine.Render.Player (renderPlayer)
import RPGEngine.Render.GUI (renderGUI)
----------------------------- Constants ------------------------------
-- Game background color
bgColor :: Color
bgColor = white
----------------------------------------------------------------------
-- Initialize a window to play in
initWindow :: String -> (Int, Int) -> (Int, Int) -> Display
initWindow = InWindow
-- Render the game
render :: Game -> Picture
render g@Game{ state = Menu } = renderMenu 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]"
renderPlaying :: Game -> Picture
renderPlaying g@Game{ playing = lvl, player = player } = pictures [
renderLevel lvl,
renderPlayer player,
renderGUI g
]
-- TODO
renderPause :: Game -> Picture
renderPause _ = text "[Press any key to continue]"
-- TODO
renderWin :: Game -> Picture
renderWin _ = text "Win"
-- TODO
renderLose :: Game -> Picture
renderLose _ = text "Lose"