{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ScopedTypeVariables #-} module Dodge.Data.Creature ( module Dodge.Data.Creature, module Dodge.Data.Creature.Misc, module Dodge.Data.Creature.State, module Dodge.Data.Creature.Perception, module Dodge.Data.Creature.Memory, module Dodge.Data.Creature.Stance, module Dodge.Data.ActionPlan, module Dodge.Data.Item, module Dodge.Data.Material, module Dodge.Data.Hammer, ) where import LinearHelp () import Control.Lens import Data.Aeson import Data.Aeson.TH import qualified Data.Map.Strict as M import Dodge.Data.ActionPlan import Dodge.Data.Creature.Memory import Dodge.Data.Creature.Misc import Dodge.Data.Creature.Perception import Dodge.Data.Creature.Stance import Dodge.Data.Creature.State import Dodge.Data.Hammer import Dodge.Data.Item import Dodge.Data.Material import Geometry.Data import qualified IntMapHelp as IM data Creature = Creature { _crPos :: Point2 , _crOldPos :: Point2 , _crVel :: Point2 , _crDir :: Float , _crOldDir :: Float , _crMvDir :: Float , _crTwist :: Float , _crType :: CreatureType , _crID :: Int , _crRad :: Float , _crMass :: Float , _crHP :: Int , _crMaxHP :: Int , _crInv :: IM.IntMap Item , _crInvSel :: InvSel , _crInvCapacity :: Int , _crInvLock :: Bool , _crInvEquipped :: IM.IntMap EquipPosition , _crEquipment :: M.Map EquipPosition Int , _crLeftInvSel :: Maybe Int , _crState :: CreatureState , _crCorpse :: CreatureCorpse --Creature -> Corpse -> SPic , _crMaterial :: Material , _crPastDamage :: Int , _crStance :: Stance , _crActionPlan :: ActionPlan , _crMeleeCooldown :: Int , _crPerception :: Perception , _crMemory :: Memory , _crVocalization :: Vocalization , _crFaction :: Faction , _crGroup :: CrGroup , _crIntention :: Intention , _crMvType :: CrMvType , _crHammerPosition :: HammerPosition , _crName :: String , _crStatistics :: CreatureStatistics , _crCamouflage :: CamouflageStatus } deriving (Eq, Show, Read) --Generic, Flat) data CreatureCorpse = MakeDefaultCorpse deriving (Eq, Ord, Show, Read) --Generic, Flat) data Intention = Intention { _targetCr :: Maybe Creature , _mvToPoint :: Maybe Point2 , _viewPoint :: Maybe Point2 } deriving (Eq, Show, Read) --Generic, Flat) crSel :: Creature -> Int crSel = _iselPos . _crInvSel makeLenses ''Creature makeLenses ''Intention deriveJSON defaultOptions ''Creature deriveJSON defaultOptions ''CreatureCorpse deriveJSON defaultOptions ''Intention