dev #25
					 3 changed files with 80 additions and 1 deletions
				
			
		
							
								
								
									
										61
									
								
								lib/data/Internals.hs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								lib/data/Internals.hs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,61 @@ | ||||||
|  | -- Represents an item in the game. | ||||||
|  | 
 | ||||||
|  | module Internals | ||||||
|  | ( Action(..) | ||||||
|  | , Object(..) | ||||||
|  | ) where | ||||||
|  | 
 | ||||||
|  | ----------------------------- Constants ------------------------------ | ||||||
|  | 
 | ||||||
|  | data Object =  | ||||||
|  |     Item { -- All fields are required | ||||||
|  |         -- Easy way to identify items | ||||||
|  |         id          :: String, | ||||||
|  |         -- Horizontal coördinate in the level | ||||||
|  |         x           :: Int, | ||||||
|  |         -- Vertical coördinate in the level | ||||||
|  |         y           :: Int, | ||||||
|  |         name        :: String, | ||||||
|  |         -- Short description of the object | ||||||
|  |         description :: String, | ||||||
|  |         -- Counts how often the object can be used by the player. Either  | ||||||
|  |         -- infinite or a natural number | ||||||
|  |         useTimes    :: Maybe Int, | ||||||
|  |         -- List of conditional actions when the player is standing on this object | ||||||
|  |         actions     :: [Action], | ||||||
|  |         -- Interpretation depends on action with this object. | ||||||
|  |         value       :: Maybe Int | ||||||
|  |     } | ||||||
|  |     | Entity { | ||||||
|  |     -- Required fields | ||||||
|  |         -- Easy way to identify items | ||||||
|  |         id          :: String, | ||||||
|  |         -- Horizontal coördinate in the level | ||||||
|  |         x           :: Int, | ||||||
|  |         -- Vertical coördinate in the level | ||||||
|  |         y           :: Int, | ||||||
|  |         name        :: String, | ||||||
|  |         -- Short description of the object | ||||||
|  |         description :: String, | ||||||
|  |         -- List of conditional actions when the player is standing on this object | ||||||
|  |         actions     :: [Action], | ||||||
|  |     -- Optional fields | ||||||
|  |         -- The direction of the item. e.g. a door has a direction. | ||||||
|  |         direction   :: Maybe Direction, | ||||||
|  |         -- Some entities have health points. | ||||||
|  |         hp          :: Maybe Int, | ||||||
|  |         -- Interpretation depends on action with this object. | ||||||
|  |         value       :: Maybe Int | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | data Direction = North  | ||||||
|  |                | East  | ||||||
|  |                | South  | ||||||
|  |                | West | ||||||
|  |                deriving (Show) | ||||||
|  | 
 | ||||||
|  | type Action = ([Condition], Event) | ||||||
|  | 
 | ||||||
|  | type Condition = Bool | ||||||
|  | 
 | ||||||
|  | type Event = * | ||||||
							
								
								
									
										15
									
								
								lib/data/Player.hs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								lib/data/Player.hs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | ||||||
|  | -- Represents a player in the game. This player can move around, pick | ||||||
|  | -- up items and interact with the world. | ||||||
|  | 
 | ||||||
|  | module Player | ||||||
|  | ( Player(..) | ||||||
|  | ) where | ||||||
|  | 
 | ||||||
|  | import Internals | ||||||
|  | 
 | ||||||
|  | ----------------------------- Constants ------------------------------ | ||||||
|  | 
 | ||||||
|  | data Player = Player { | ||||||
|  |     hp :: Int, | ||||||
|  |     inventory :: [Object] | ||||||
|  | } | ||||||
|  | @ -11,8 +11,11 @@ library | ||||||
|     gloss >= 1.11 && < 1.14, gloss-juicy >= 0.2.3 |     gloss >= 1.11 && < 1.14, gloss-juicy >= 0.2.3 | ||||||
|   exposed-modules: |   exposed-modules: | ||||||
|     RPGEngine, |     RPGEngine, | ||||||
|  |     -- Control | ||||||
|     Input, InputHandling, |     Input, InputHandling, | ||||||
|     Game, State, |     -- Data | ||||||
|  |     Game, Internals, Player, State, | ||||||
|  |     -- Render | ||||||
|     Render |     Render | ||||||
| 
 | 
 | ||||||
| executable rpg-engine | executable rpg-engine | ||||||
|  |  | ||||||
		Reference in a new issue