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 :: Color
|
||||||
textColor = white
|
textColor = white
|
||||||
|
|
||||||
|
-- Color of selection
|
||||||
|
selectionColor :: Color
|
||||||
|
selectionColor = red
|
||||||
|
|
||||||
-- Default scale
|
-- Default scale
|
||||||
zoom :: Float
|
zoom :: Float
|
||||||
zoom = 5
|
zoom = 5
|
||||||
|
|
|
@ -5,7 +5,7 @@ module RPGEngine.Data.Game
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import RPGEngine.Data
|
import RPGEngine.Data
|
||||||
( Player(Player, position),
|
( Player(..),
|
||||||
Direction,
|
Direction,
|
||||||
Physical(Exit, Walkable, Entrance),
|
Physical(Exit, Walkable, Entrance),
|
||||||
State(..),
|
State(..),
|
||||||
|
@ -33,4 +33,5 @@ isPlayerAtExit _ = False
|
||||||
|
|
||||||
-- Check if the players health is <= 0, which means the player is dead.
|
-- Check if the players health is <= 0, which means the player is dead.
|
||||||
isPlayerDead :: Game -> Bool
|
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
|
( handleInputLose
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import RPGEngine.Input.Core (InputHandler)
|
import RPGEngine.Input.Core (InputHandler, handleAnyKey)
|
||||||
|
|
||||||
import RPGEngine.Data (Game)
|
import RPGEngine.Data (Game(..), State(..))
|
||||||
|
|
||||||
------------------------------ Exported ------------------------------
|
------------------------------ Exported ------------------------------
|
||||||
|
|
||||||
handleInputLose :: InputHandler Game
|
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
|
where newGame | isPlayerDead g = loseGame
|
||||||
| isPlayerAtExit g = g{ state = goToNextLevel s }
|
| isPlayerAtExit g = g{ state = goToNextLevel s }
|
||||||
| otherwise = g
|
| otherwise = g
|
||||||
loseGame = g{ state = restart }
|
loseGame = g{ state = Lose{ restart = restart }}
|
||||||
checkPlaying g = g
|
checkPlaying g = g
|
||||||
|
|
||||||
pauseGame :: Game -> Game
|
pauseGame :: Game -> Game
|
||||||
|
|
|
@ -44,6 +44,7 @@ allItems = [
|
||||||
|
|
||||||
allGui :: [(String, FilePath)]
|
allGui :: [(String, FilePath)]
|
||||||
allGui = [
|
allGui = [
|
||||||
|
("main", "main.png"),
|
||||||
("health", "health.png")
|
("health", "health.png")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ module RPGEngine.Render.LevelSelection
|
||||||
|
|
||||||
import RPGEngine.Render.Core (Renderer)
|
import RPGEngine.Render.Core (Renderer)
|
||||||
|
|
||||||
import RPGEngine.Config (resolution, zoom, uizoom)
|
import RPGEngine.Config (resolution, zoom, uizoom, textColor, selectionColor )
|
||||||
import RPGEngine.Data (State (..))
|
import RPGEngine.Data (State (..))
|
||||||
|
|
||||||
import Graphics.Gloss ( pictures, color, text, translate, blank )
|
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
|
where everything = pictures $ map render entries
|
||||||
sel = selection selector
|
sel = selection selector
|
||||||
entries = zip [0::Int .. ] list
|
entries = zip [0::Int .. ] list
|
||||||
render (i, path) | i == sel = color red $ scale uizoom uizoom $ translate 0 (offset i) $ text path
|
render (i, path) | i == sel = color selectionColor $ make (i, path)
|
||||||
| otherwise = scale uizoom uizoom $ translate 0 (offset i) $ text 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)
|
offset i = negate (250 * uizoom * fromIntegral i)
|
||||||
renderLevelList _ = blank
|
renderLevelList _ = blank
|
|
@ -1,15 +1,21 @@
|
||||||
module RPGEngine.Render.Lose
|
module RPGEngine.Render.Lose
|
||||||
( renderLose
|
( renderLose
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import RPGEngine.Render.Core (Renderer)
|
import RPGEngine.Render.Core (Renderer)
|
||||||
|
|
||||||
|
import RPGEngine.Config (uizoom, textColor)
|
||||||
import RPGEngine.Data (State)
|
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 ------------------------------
|
------------------------------ Exported ------------------------------
|
||||||
|
|
||||||
-- TODO
|
|
||||||
renderLose :: Renderer State
|
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
|
( renderMenu
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import RPGEngine.Render.Core (Renderer)
|
import RPGEngine.Render.Core (Renderer, getRender)
|
||||||
|
|
||||||
import RPGEngine.Config ( uizoom, textColor )
|
import RPGEngine.Config ( uizoom, textColor )
|
||||||
import RPGEngine.Data (State)
|
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 ------------------------------
|
------------------------------ Exported ------------------------------
|
||||||
|
|
||||||
renderMenu :: Renderer State
|
renderMenu :: Renderer State
|
||||||
renderMenu _ = scaled $ center $ color textColor $ text "[Press any key to start]"
|
renderMenu _ = pictures [main, pressAny]
|
||||||
where scaled = scale uizoom uizoom
|
where pressAny = scaled $ center $ color textColor $ text message
|
||||||
center = translate (-750) 0
|
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.Render.Core (Renderer)
|
||||||
|
|
||||||
|
import RPGEngine.Config (uizoom, textColor)
|
||||||
import RPGEngine.Data (State)
|
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 ------------------------------
|
------------------------------ Exported ------------------------------
|
||||||
|
|
||||||
-- TODO
|
|
||||||
renderWin :: Renderer State
|
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