Add generic derivations and To/FromJSON instances
This commit is contained in:
@@ -1,23 +1,27 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Creature.Misc
|
||||
( module Dodge.Data.Creature.Misc
|
||||
, module Dodge.Data.CamouflageStatus
|
||||
) where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.FloatFunction
|
||||
import Dodge.Data.CamouflageStatus
|
||||
import Sound.Data
|
||||
import Geometry.Data
|
||||
import Color
|
||||
import Control.Lens
|
||||
|
||||
data CreatureStatistics = CreatureStatistics
|
||||
{ _strength :: Int
|
||||
, _dexterity :: Int
|
||||
, _intelligence :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CreatureStatistics where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CreatureStatistics
|
||||
data Vocalization
|
||||
= Mute
|
||||
| Vocalization
|
||||
@@ -26,8 +30,10 @@ data Vocalization
|
||||
,_vcMaxCoolDown :: Int
|
||||
,_vcCoolDown :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Vocalization where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Vocalization
|
||||
data CrMvType
|
||||
= NoMvType
|
||||
| MvWalking { _mvSpeed :: Float }
|
||||
@@ -37,13 +43,17 @@ data CrMvType
|
||||
, _mvTurnJit :: Float
|
||||
, _mvAimSpeed :: FloatFloat
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CrMvType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CrMvType
|
||||
data HumanoidAI = YourAI | ChaseAI | InanimateAI | SpreadGunAI | PistolAI
|
||||
| LtAutoAI | LauncherAI | SwarmAI | AutoAI | FlockArmourChaseAI | MiniGunAI
|
||||
| LongAI | MultGunAI
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HumanoidAI where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HumanoidAI
|
||||
data CreatureType
|
||||
= Humanoid
|
||||
{ _skinHead :: Color
|
||||
@@ -55,11 +65,15 @@ data CreatureType
|
||||
| Lampoid {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int}
|
||||
| Turretoid
|
||||
| NonDrawnCreature
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CreatureType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CreatureType
|
||||
data BarrelType = PlainBarrel | ExplosiveBarrel
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON BarrelType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BarrelType
|
||||
makeLenses ''CreatureStatistics
|
||||
makeLenses ''Vocalization
|
||||
makeLenses ''CrMvType
|
||||
|
||||
Reference in New Issue
Block a user