game/src/Area/Tile.hs

47 lines
1.2 KiB
Haskell

{-# LANGUAGE DeriveGeneric #-}
module Area.Tile (
Content(..)
, Terrain(..)
, Tile(..)
) where
import Data.Aeson (ToJSON(..), FromJSON(..), genericToEncoding, genericParseJSON, defaultOptions)
import GHC.Generics (Generic)
import Area.NaturalElements (NaturalElements)
import Area.Climate (Climate)
import qualified Character (Key)
import qualified Item (Key)
import qualified Pokemon (T)
data Terrain = Normal | Water deriving (Generic)
instance ToJSON Terrain where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Terrain where
parseJSON = genericParseJSON defaultOptions
data Content =
Empty
| Item Item.Key
| Character Character.Key
| Pokemon Pokemon.T
| NaturalElements NaturalElements
deriving (Generic)
instance ToJSON Content where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Content where
parseJSON = genericParseJSON defaultOptions
data Tile = Tile {
terrain :: Terrain
, skin :: FilePath
, content :: Content
, climate :: Climate
} deriving (Generic)
instance ToJSON Tile where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Tile where
parseJSON = genericParseJSON defaultOptions