game/src/Pokemon.hs

34 lines
864 B
Haskell

{-# LANGUAGE DeriveGeneric #-}
{- LANGUAGE FlexibleInstances #-}
module Pokemon (
T(..)
) where
import Data.Aeson (ToJSON(..), FromJSON(..), genericToEncoding, genericParseJSON, defaultOptions)
import GHC.Generics (Generic)
import qualified Pokemon.Species as Species (Key)
import Pokemon.Status (Status)
import qualified Pokemon.Move as Move (Key)
import Tool.Array (Array)
data Gender = M | F | NB deriving (Generic)
instance ToJSON Gender where
toEncoding = genericToEncoding defaultOptions
instance FromJSON Gender
data T = T {
nick :: Maybe String
, species :: Species.Key
, gender :: Gender
, level :: Int
, status :: Status
, moves :: Array Move.Key
} deriving (Generic)
instance ToJSON T where
toEncoding = genericToEncoding defaultOptions
instance FromJSON T where
parseJSON = genericParseJSON defaultOptions