dev #16
					 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