{-# 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 = ChaseAI | InanimateAI | SpreadGunAI | PistolAI | LtAutoAI | LauncherAI | SwarmAI | AutoAI | FlockArmourChaseAI | MiniGunAI | LongAI | MultGunAI deriving (Eq, Ord, Show, Read) --Generic, Flat) data Pulse = PulseStatus { _pulseRate :: Int , _pulseProgress :: Int } deriving (Eq, Ord, Show, Read) --Generic, Flat) data CreatureType = Avatar { _skinHead :: Color , _skinUpper :: Color , _skinLower :: Color , _avatarPulse :: Pulse } | 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 ''Pulse makeLenses ''CreatureStatistics makeLenses ''Vocalization makeLenses ''CrMvType makeLenses ''CreatureType deriveJSON defaultOptions ''Pulse deriveJSON defaultOptions ''CreatureStatistics deriveJSON defaultOptions ''Vocalization deriveJSON defaultOptions ''CrMvType deriveJSON defaultOptions ''HumanoidAI deriveJSON defaultOptions ''BarrelType deriveJSON defaultOptions ''CreatureType