108 lines
2.5 KiB
Haskell
108 lines
2.5 KiB
Haskell
--{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# 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 Dodge.Data.Material
|
|
import Geometry.Data
|
|
|
|
data Vocalization
|
|
= Mute
|
|
| Vocalization
|
|
{ _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
|
|
{ _avatarPulse :: Pulse
|
|
, _avatarMaterial :: Material
|
|
, _avStrength :: Int
|
|
, _avDexterity :: Int
|
|
, _avIntelligence :: Int
|
|
, _avMoveSpeed :: Float
|
|
}
|
|
| AvatarDead
|
|
| ChaseCrit {_meleeCooldown :: Int}
|
|
| SwarmCrit
|
|
| AutoCrit
|
|
| BarrelCrit {_barrelType :: BarrelType}
|
|
| LampCrit {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int}
|
|
|
|
data CreatureShape
|
|
= Humanoid
|
|
{ _skinHead :: Color
|
|
, _skinUpper :: Color
|
|
, _skinLower :: Color
|
|
, _humanoidAI :: HumanoidAI
|
|
}
|
|
| Barreloid
|
|
| NonDrawnCreature
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data BarrelType
|
|
= PlainBarrel
|
|
| ExplosiveBarrel {_piercedPoints :: [Point2]}
|
|
deriving (Eq, Show, Read) --Generic, Flat)
|
|
|
|
makeLenses ''Pulse
|
|
makeLenses ''BarrelType
|
|
|
|
--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
|