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