{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.Creature ( module Dodge.Data.Creature , module Dodge.Data.CamouflageStatus ) where 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) data Vocalization = Mute | Vocalization {_vcSound :: SoundID ,_vcWarnings :: [SoundID] ,_vcMaxCoolDown :: Int ,_vcCoolDown :: Int } deriving (Eq,Ord,Show) data CrMvType = NoMvType | MvWalking { _mvSpeed :: Float } | CrMvType { _mvSpeed :: Float , _mvTurnRad :: Float -> Float , _mvTurnJit :: Float , _mvAimSpeed :: Float -> Float } data HumanoidAI = YourAI | ChaseAI | InanimateAI | SpreadGunAI | PistolAI | LtAutoAI | LauncherAI | SwarmAI | AutoAI | FlockArmourChaseAI | MiniGunAI | LongAI | MultGunAI data CreatureType = Humanoid { _skinHead :: Color , _skinUpper :: Color , _skinLower :: Color , _humanoidAI :: HumanoidAI } | Barreloid {_barrelType :: BarrelType} | Lampoid {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int} | Turretoid | NonDrawnCreature data BarrelType = PlainBarrel | ExplosiveBarrel makeLenses ''CreatureStatistics makeLenses ''Vocalization makeLenses ''CrMvType makeLenses ''CreatureType