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 Pokemon (Pokemon)
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
| 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