pathfindingcore-1.1: src/PathFindingCore/PathingMap/Terrain.hs
module PathFindingCore.PathingMap.Terrain where
import Control.Applicative(pure)
import Control.Arrow((>>>))
data Terrain
= Ant
| Empty
| Food
| Goal
| Mound
| Path
| Query
| Self
| Wall
| Water deriving (Eq)
isPassable :: Terrain -> Bool
isPassable Ant = True
isPassable Empty = True
isPassable Food = True
isPassable Goal = True
isPassable Mound = True
isPassable Path = False
isPassable Query = False
isPassable Self = False
isPassable Wall = False
isPassable Water = False
charToTerrain :: Char -> Terrain
charToTerrain 'a' = Ant
charToTerrain ' ' = Empty
charToTerrain 'f' = Food
charToTerrain 'G' = Goal
charToTerrain 'O' = Mound
charToTerrain 'x' = Path
charToTerrain '.' = Query
charToTerrain '*' = Self
charToTerrain 'D' = Wall
charToTerrain '%' = Water
charToTerrain x = error $ "Cannot convert '" ++ (show x) ++ "' to a terrain"
terrainToChar :: Terrain -> Char
terrainToChar Ant = 'a'
terrainToChar Empty = ' '
terrainToChar Food = 'f'
terrainToChar Goal = 'G'
terrainToChar Mound = 'O'
terrainToChar Path = 'x'
terrainToChar Query = '.'
terrainToChar Self = '*'
terrainToChar Wall = 'D'
terrainToChar Water = '%'
instance Show Terrain where
show = terrainToChar >>> pure