{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.Creature ( module Dodge.Data.Creature , module Dodge.Data.Creature.Misc , module Dodge.Data.Creature.State ) where import Dodge.Data.Creature.Misc import Dodge.Data.Creature.State import Dodge.Data.Item import Dodge.Data.LoadAction import Dodge.Data.Material import Dodge.Data.ActionPlan import Dodge.Data.Hammer import Dodge.Creature.Perception.Data import Dodge.Creature.Memory.Data import Dodge.Creature.Stance.Data import Dodge.Creature.State.Data import Dodge.Equipment.Data import Geometry.Data import qualified IntMapHelp as IM import qualified Data.Map.Strict as M import Control.Lens 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,Ord,Show,Read) data CreatureCorpse = MakeDefaultCorpse deriving (Eq,Ord,Show,Read) data Intention = Intention { _targetCr :: Maybe Creature , _mvToPoint :: Maybe Point2 , _viewPoint :: Maybe Point2 } deriving (Eq,Ord,Show,Read) makeLenses ''Creature makeLenses ''Intention