Add generic derivations and To/FromJSON instances

This commit is contained in:
2022-07-25 22:49:18 +01:00
parent f5604ef429
commit b8e8413daa
99 changed files with 1406 additions and 517 deletions
+27 -13
View File
@@ -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