74 lines
2.0 KiB
Haskell
74 lines
2.0 KiB
Haskell
module Map.Types
|
|
where
|
|
|
|
import Types
|
|
|
|
import Data.Array
|
|
|
|
type PlayMap = Array (Xindex, Zindex) Node
|
|
|
|
type Xindex = Int
|
|
type Zindex = Int
|
|
type XCoord = Float
|
|
type ZCoord = Float
|
|
type YCoord = Float
|
|
|
|
data MapType = GrassIslandMap
|
|
| DesertMap
|
|
|
|
-- | Ownership information, Parameter to occupied is player number
|
|
data PlayerInfo = NoPlayer
|
|
| Occupied Int
|
|
|
|
instance Show PlayerInfo where
|
|
show (NoPlayer) = "not occupied"
|
|
show (Occupied i) = "occupied by player " ++ show i
|
|
|
|
-- | Path info, is this node part of a path and if so, where does it lead?
|
|
data PathInfo = NoPath
|
|
| Border
|
|
| Paths [(XCoord, YCoord)]
|
|
deriving (Show, Eq)
|
|
|
|
-- | What resources can be harvested here?
|
|
data ResInfo = Plain
|
|
| ResInfo Resource Amount
|
|
|
|
instance Show ResInfo where
|
|
show (Plain) = "no resources"
|
|
show (ResInfo res amt) = "Resource: " ++ show res ++ "," ++ show amt
|
|
|
|
-- | What commodities are currently stored here?
|
|
type StorInfo = [(Commodity,Amount)]
|
|
|
|
-- | What kind of structures may be erected here?
|
|
data BuildInfo = BStruc Structure
|
|
| BNothing
|
|
| BFlag
|
|
| BMine
|
|
| BSmall
|
|
| BMedium
|
|
| BLarge
|
|
|
|
instance Show BuildInfo where
|
|
show (BStruc s) = "Structure: " ++ show s
|
|
show (BNothing) = "no Structure possible"
|
|
show (BFlag) = "only flags possible"
|
|
show (BMine) = "mines possible"
|
|
show (BSmall) = "small buildings possible"
|
|
show (BMedium) = "medium buildings possible"
|
|
show (BLarge) = "large buildings possible"
|
|
|
|
data TileType = Ocean
|
|
| Beach
|
|
| Grass
|
|
| Desert
|
|
| Lake
|
|
| Hill -- ^ Accessible
|
|
| Mountain -- ^ Not accessible
|
|
deriving (Show, Eq)
|
|
|
|
-- TODO: Record Syntax?
|
|
data Node = Node (Xindex, Zindex) (XCoord, ZCoord, YCoord) TileType BuildInfo PlayerInfo PathInfo ResInfo StorInfo
|
|
deriving (Show)
|