{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Creature.Misc ( module Dodge.Data.Creature.Misc, module Dodge.Data.CamouflageStatus, ) where import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.CamouflageStatus import Dodge.Data.FloatFunction import Geometry.Data import Sound.Data data CreatureStatistics = CreatureStatistics { _strength :: Int , _dexterity :: Int , _intelligence :: Int } deriving (Eq, Ord, Show, Read) --Generic, Flat) data Vocalization = Mute | Vocalization { _vcSound :: SoundID , _vcWarnings :: [SoundID] , _vcMaxCoolDown :: (Int, Int) , _vcCoolDown :: Int } deriving (Eq, Ord, Show, Read) --Generic, Flat) data CrMvType = NoMvType | MvWalking {_mvSpeed :: Float} | CrMvType { _mvSpeed :: Float , _mvTurnRad :: FloatFloat , _mvTurnJit :: Float , _mvAimSpeed :: FloatFloat } deriving (Eq, Ord, Show, Read) --Generic, Flat) data HumanoidAI = YourAI | ChaseAI | InanimateAI | SpreadGunAI | PistolAI | LtAutoAI | LauncherAI | SwarmAI | AutoAI | FlockArmourChaseAI | MiniGunAI | LongAI | MultGunAI deriving (Eq, Ord, Show, Read) --Generic, Flat) data CreatureType = Humanoid { _skinHead :: Color , _skinUpper :: Color , _skinLower :: Color , _humanoidAI :: HumanoidAI } | Barreloid {_barrelType :: BarrelType} | Lampoid {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int} | NonDrawnCreature deriving (Eq, Ord, Show, Read) --Generic, Flat) data BarrelType = PlainBarrel | ExplosiveBarrel deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''CreatureStatistics makeLenses ''Vocalization makeLenses ''CrMvType makeLenses ''CreatureType deriveJSON defaultOptions ''CreatureStatistics deriveJSON defaultOptions ''Vocalization deriveJSON defaultOptions ''CrMvType deriveJSON defaultOptions ''HumanoidAI deriveJSON defaultOptions ''BarrelType deriveJSON defaultOptions ''CreatureType