88 lines
2.0 KiB
Haskell
88 lines
2.0 KiB
Haskell
{-# 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)
|
|
|
|
data Vocalization
|
|
= Mute
|
|
| Vocalization
|
|
{ _vcSound :: SoundID
|
|
, _vcWarnings :: [SoundID]
|
|
, _vcMaxCoolDown :: Int
|
|
, _vcCoolDown :: Int
|
|
}
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data CrMvType
|
|
= NoMvType
|
|
| MvWalking {_mvSpeed :: Float}
|
|
| CrMvType
|
|
{ _mvSpeed :: Float
|
|
, _mvTurnRad :: FloatFloat
|
|
, _mvTurnJit :: Float
|
|
, _mvAimSpeed :: FloatFloat
|
|
}
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data HumanoidAI
|
|
= YourAI
|
|
| ChaseAI
|
|
| InanimateAI
|
|
| SpreadGunAI
|
|
| PistolAI
|
|
| LtAutoAI
|
|
| LauncherAI
|
|
| SwarmAI
|
|
| AutoAI
|
|
| FlockArmourChaseAI
|
|
| MiniGunAI
|
|
| LongAI
|
|
| MultGunAI
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data CreatureType
|
|
= Humanoid
|
|
{ _skinHead :: Color
|
|
, _skinUpper :: Color
|
|
, _skinLower :: Color
|
|
, _humanoidAI :: HumanoidAI
|
|
}
|
|
| Barreloid {_barrelType :: BarrelType}
|
|
| Lampoid {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int}
|
|
| Turretoid
|
|
| NonDrawnCreature
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data BarrelType = PlainBarrel | ExplosiveBarrel
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
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
|