{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Creature.Misc ( module Dodge.Data.Creature.Misc, module Dodge.Data.CamouflageStatus, ) where import Data.Binary import Flat 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) instance Binary CreatureStatistics data Vocalization = Mute | Vocalization { _vcSound :: SoundID , _vcWarnings :: [SoundID] , _vcMaxCoolDown :: Int , _vcCoolDown :: Int } deriving (Eq, Ord, Show, Read, Generic, Flat) instance Binary Vocalization data CrMvType = NoMvType | MvWalking {_mvSpeed :: Float} | CrMvType { _mvSpeed :: Float , _mvTurnRad :: FloatFloat , _mvTurnJit :: Float , _mvAimSpeed :: FloatFloat } deriving (Eq, Ord, Show, Read, Generic, Flat) instance Binary CrMvType data HumanoidAI = YourAI | ChaseAI | InanimateAI | SpreadGunAI | PistolAI | LtAutoAI | LauncherAI | SwarmAI | AutoAI | FlockArmourChaseAI | MiniGunAI | LongAI | MultGunAI deriving (Eq, Ord, Show, Read, Generic, Flat) instance Binary HumanoidAI 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) instance Binary CreatureType data BarrelType = PlainBarrel | ExplosiveBarrel deriving (Eq, Ord, Show, Read, Generic, Flat) instance Binary BarrelType makeLenses ''CreatureStatistics makeLenses ''Vocalization makeLenses ''CrMvType makeLenses ''CreatureType deriveJSON defaultOptions ''CreatureStatistics deriveJSON defaultOptions ''Vocalization deriveJSON defaultOptions ''CrMvType deriveJSON defaultOptions ''HumanoidAI deriveJSON defaultOptions ''CreatureType deriveJSON defaultOptions ''BarrelType