55 lines
1.5 KiB
Haskell
55 lines
1.5 KiB
Haskell
{-# 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
|