parent
f348a47281
commit
9e5f22458c
6 changed files with 93 additions and 30 deletions
|
@ -6,10 +6,10 @@ module RPGEngine
|
|||
) where
|
||||
|
||||
import Game
|
||||
import RenderGame
|
||||
import Render
|
||||
import Graphics.Gloss (
|
||||
Color(..)
|
||||
, black
|
||||
, white
|
||||
, play
|
||||
)
|
||||
|
||||
|
@ -25,7 +25,7 @@ winOffsets = (0, 0)
|
|||
|
||||
-- Game background color
|
||||
bgColor :: Color
|
||||
bgColor = black
|
||||
bgColor = white
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -2,21 +2,24 @@
|
|||
|
||||
module Game
|
||||
( Game(..)
|
||||
, initGame -- Initialize the game
|
||||
|
||||
-- Initialize the game
|
||||
, initGame
|
||||
) where
|
||||
|
||||
import State
|
||||
|
||||
----------------------------- Constants ------------------------------
|
||||
|
||||
-- TODO Add more
|
||||
data Game = Game {
|
||||
-- TODO Add more
|
||||
playerName :: String
|
||||
-- Current state of the game
|
||||
state :: State
|
||||
}
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-- Initialize the game
|
||||
-- TODO Expand
|
||||
initGame :: Game
|
||||
initGame = Game {
|
||||
playerName = "Tibo"
|
||||
state = defaultState
|
||||
}
|
||||
|
|
32
lib/data/State.hs
Normal file
32
lib/data/State.hs
Normal file
|
@ -0,0 +1,32 @@
|
|||
-- Describes the current state of the game,
|
||||
-- e.g. Main menu, game, pause, win or lose
|
||||
-- Allows to easily go to a next state and change rendering accordingly
|
||||
|
||||
module State
|
||||
( State(..)
|
||||
-- Default state of the game, Menu
|
||||
, defaultState
|
||||
|
||||
-- Get the next state based on the current state
|
||||
, nextState
|
||||
) where
|
||||
|
||||
----------------------------- Constants ------------------------------
|
||||
|
||||
-- Current state of the game.
|
||||
data State = Menu
|
||||
| Playing
|
||||
| Pause
|
||||
| Win
|
||||
| Lose
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
defaultState :: State
|
||||
defaultState = Menu
|
||||
|
||||
nextState :: State -> State
|
||||
nextState Menu = Playing
|
||||
nextState Playing = Pause
|
||||
nextState Pause = Playing
|
||||
nextState _ = Menu
|
47
lib/render/Render.hs
Normal file
47
lib/render/Render.hs
Normal file
|
@ -0,0 +1,47 @@
|
|||
-- Allows to render the played game
|
||||
|
||||
module Render
|
||||
(
|
||||
-- Initialize a window to play in
|
||||
initWindow
|
||||
|
||||
-- Render the game
|
||||
, render
|
||||
) where
|
||||
|
||||
import Game(Game(..))
|
||||
import State(State(..))
|
||||
import Graphics.Gloss
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
initWindow :: String -> (Int, Int) -> (Int, Int) -> Display
|
||||
initWindow title dims offs = InWindow title dims offs
|
||||
|
||||
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 "Menu"
|
||||
|
||||
-- TODO
|
||||
renderPlaying :: Game -> Picture
|
||||
renderPlaying _ = text "Playing"
|
||||
|
||||
-- TODO
|
||||
renderPause :: Game -> Picture
|
||||
renderPause _ = text "Pause"
|
||||
|
||||
-- TODO
|
||||
renderWin :: Game -> Picture
|
||||
renderWin _ = text "Win"
|
||||
|
||||
-- TODO
|
||||
renderLose :: Game -> Picture
|
||||
renderLose _ = text "Lose"
|
|
@ -1,19 +0,0 @@
|
|||
-- Allows to render the played game
|
||||
|
||||
module RenderGame
|
||||
( initWindow -- Initialize a window to play in
|
||||
, render -- Rener the game
|
||||
) where
|
||||
|
||||
import Game
|
||||
import Graphics.Gloss
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-- Render the game
|
||||
render :: Game -> Picture
|
||||
render _ = Blank
|
||||
|
||||
-- Initialize a window to play in
|
||||
initWindow :: String -> (Int, Int) -> (Int, Int) -> Display
|
||||
initWindow title dims offs = InWindow title dims offs
|
|
@ -11,8 +11,8 @@ library
|
|||
gloss >= 1.11 && < 1.14, gloss-juicy >= 0.2.3
|
||||
exposed-modules:
|
||||
RPGEngine,
|
||||
Game,
|
||||
RenderGame
|
||||
Game, State,
|
||||
Render
|
||||
|
||||
executable rpg-engine
|
||||
main-is: Main.hs
|
||||
|
|
Reference in a new issue