-- Allows to render the played game module RPGEngine.Render ( initWindow , bgColor , 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) ----------------------------- 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 = 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"