parent
becd305e01
commit
5cc96cbdba
10 changed files with 53 additions and 21 deletions
BIN
assets/gui/main.png
Normal file
BIN
assets/gui/main.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.3 KiB |
|
@ -23,6 +23,10 @@ bgColor = makeColor (37 / 256) (19 / 256) (26 / 256) 1
|
|||
textColor :: Color
|
||||
textColor = white
|
||||
|
||||
-- Color of selection
|
||||
selectionColor :: Color
|
||||
selectionColor = red
|
||||
|
||||
-- Default scale
|
||||
zoom :: Float
|
||||
zoom = 5
|
||||
|
|
|
@ -5,7 +5,7 @@ module RPGEngine.Data.Game
|
|||
) where
|
||||
|
||||
import RPGEngine.Data
|
||||
( Player(Player, position),
|
||||
( Player(..),
|
||||
Direction,
|
||||
Physical(Exit, Walkable, Entrance),
|
||||
State(..),
|
||||
|
@ -33,4 +33,5 @@ isPlayerAtExit _ = False
|
|||
|
||||
-- Check if the players health is <= 0, which means the player is dead.
|
||||
isPlayerDead :: Game -> Bool
|
||||
isPlayerDead _ = False
|
||||
isPlayerDead g@Game{ state = Playing{ player = Player{ playerHp = (Just hp)}}} = hp <= 0
|
||||
isPlayerDead _ = False
|
||||
|
|
|
@ -2,11 +2,16 @@ module RPGEngine.Input.Lose
|
|||
( handleInputLose
|
||||
) where
|
||||
|
||||
import RPGEngine.Input.Core (InputHandler)
|
||||
import RPGEngine.Input.Core (InputHandler, handleAnyKey)
|
||||
|
||||
import RPGEngine.Data (Game)
|
||||
import RPGEngine.Data (Game(..), State(..))
|
||||
|
||||
------------------------------ Exported ------------------------------
|
||||
|
||||
handleInputLose :: InputHandler Game
|
||||
handleInputLose = undefined
|
||||
handleInputLose = handleAnyKey retry
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
retry :: Game -> Game
|
||||
retry g@Game{ state = Lose{ restart = restart }} = g{ state = restart }
|
|
@ -50,7 +50,7 @@ checkPlaying g@Game{ state = s@Playing{ restart = restart }} = newGame
|
|||
where newGame | isPlayerDead g = loseGame
|
||||
| isPlayerAtExit g = g{ state = goToNextLevel s }
|
||||
| otherwise = g
|
||||
loseGame = g{ state = restart }
|
||||
loseGame = g{ state = Lose{ restart = restart }}
|
||||
checkPlaying g = g
|
||||
|
||||
pauseGame :: Game -> Game
|
||||
|
|
|
@ -44,6 +44,7 @@ allItems = [
|
|||
|
||||
allGui :: [(String, FilePath)]
|
||||
allGui = [
|
||||
("main", "main.png"),
|
||||
("health", "health.png")
|
||||
]
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ module RPGEngine.Render.LevelSelection
|
|||
|
||||
import RPGEngine.Render.Core (Renderer)
|
||||
|
||||
import RPGEngine.Config (resolution, zoom, uizoom)
|
||||
import RPGEngine.Config (resolution, zoom, uizoom, textColor, selectionColor )
|
||||
import RPGEngine.Data (State (..))
|
||||
|
||||
import Graphics.Gloss ( pictures, color, text, translate, blank )
|
||||
|
@ -25,7 +25,8 @@ renderLevelList LevelSelection{ levelList = list, selector = selector } = everyt
|
|||
where everything = pictures $ map render entries
|
||||
sel = selection selector
|
||||
entries = zip [0::Int .. ] list
|
||||
render (i, path) | i == sel = color red $ scale uizoom uizoom $ translate 0 (offset i) $ text path
|
||||
| otherwise = scale uizoom uizoom $ translate 0 (offset i) $ text path
|
||||
render (i, path) | i == sel = color selectionColor $ make (i, path)
|
||||
| otherwise = color textColor $ make (i, path)
|
||||
make (i, path) = scale uizoom uizoom $ translate 0 (offset i) $ text path
|
||||
offset i = negate (250 * uizoom * fromIntegral i)
|
||||
renderLevelList _ = blank
|
|
@ -1,15 +1,21 @@
|
|||
module RPGEngine.Render.Lose
|
||||
( renderLose
|
||||
) where
|
||||
|
||||
import RPGEngine.Render.Core (Renderer)
|
||||
|
||||
import RPGEngine.Config (uizoom, textColor)
|
||||
import RPGEngine.Data (State)
|
||||
|
||||
import Graphics.Gloss (text)
|
||||
import Graphics.Gloss (text, scale, color, translate)
|
||||
|
||||
------------------------------ Constants -----------------------------
|
||||
|
||||
message :: String
|
||||
message = "You lose! Press any key to retry."
|
||||
|
||||
------------------------------ Exported ------------------------------
|
||||
|
||||
-- TODO
|
||||
renderLose :: Renderer State
|
||||
renderLose _ = text "You lose"
|
||||
renderLose _ = scaled $ center $ color textColor $ text message
|
||||
where scaled = scale uizoom uizoom
|
||||
center = translate (-1200) 0
|
|
@ -2,16 +2,23 @@ module RPGEngine.Render.Menu
|
|||
( renderMenu
|
||||
) where
|
||||
|
||||
import RPGEngine.Render.Core (Renderer)
|
||||
import RPGEngine.Render.Core (Renderer, getRender)
|
||||
|
||||
import RPGEngine.Config ( uizoom, textColor )
|
||||
import RPGEngine.Data (State)
|
||||
|
||||
import Graphics.Gloss (text, scale, color, white, translate)
|
||||
import Graphics.Gloss (text, scale, color, translate, pictures)
|
||||
|
||||
------------------------------ Constants -----------------------------
|
||||
|
||||
message :: String
|
||||
message = "[Press any key to start]"
|
||||
|
||||
------------------------------ Exported ------------------------------
|
||||
|
||||
renderMenu :: Renderer State
|
||||
renderMenu _ = scaled $ center $ color textColor $ text "[Press any key to start]"
|
||||
where scaled = scale uizoom uizoom
|
||||
center = translate (-750) 0
|
||||
renderMenu _ = pictures [main, pressAny]
|
||||
where pressAny = scaled $ center $ color textColor $ text message
|
||||
scaled = scale uizoom uizoom
|
||||
center = translate (-800) (-320)
|
||||
main = getRender "main"
|
|
@ -4,12 +4,19 @@ module RPGEngine.Render.Win
|
|||
|
||||
import RPGEngine.Render.Core (Renderer)
|
||||
|
||||
import RPGEngine.Config (uizoom, textColor)
|
||||
import RPGEngine.Data (State)
|
||||
|
||||
import Graphics.Gloss (text)
|
||||
import Graphics.Gloss (text, scale, color, translate)
|
||||
|
||||
------------------------------ Constants -----------------------------
|
||||
|
||||
message :: String
|
||||
message = "You win! Press any key to return to the menu."
|
||||
|
||||
------------------------------ Exported ------------------------------
|
||||
|
||||
-- TODO
|
||||
renderWin :: Renderer State
|
||||
renderWin _ = text "You win!\nPress any key to return to the menu."
|
||||
renderWin _ = scaled $ center $ color textColor $ text message
|
||||
where scaled = scale uizoom uizoom
|
||||
center = translate (-1500) 0
|
Reference in a new issue