Files
loop/src/Dodge/Data/Creature/Misc.hs
T
2024-12-18 11:39:12 +00:00

102 lines
2.5 KiB
Haskell

{-# 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