{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} 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.Item.Use.Consumption.LoadAction, ) where import NewInt import Dodge.Data.Item.Use.Consumption.LoadAction import Dodge.Data.Equipment.Misc 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.Item import Dodge.Data.Material import Geometry.Data --import qualified IntMapHelp as IM data Creature = Creature { _crPos :: Point2 , _crOldPos :: Point2 , _crZ :: Float , _crZVel :: Float , _crDir :: Float , _crMvDir :: Float , _crMvAim :: Float , _crType :: CreatureType , _crID :: Int , _crHP :: Int , _crInv :: NewIntMap InvInt Int , _crManipulation :: Manipulation , _crEquipment :: M.Map EquipSite (NewInt InvInt) , _crDamage :: [Damage] , _crPain :: Int , _crStance :: Stance , _crActionPlan :: ActionPlan , _crPerception :: Perception , _crMemory :: Memory , _crVocalization :: Vocalization , _crFaction :: Faction , _crGroup :: CrGroup , _crIntention :: Intention -- , _crMvType :: CrMvType , _crName :: String , _crDeathTimer :: Int } --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) makeLenses ''Creature makeLenses ''Intention concat <$> mapM (deriveJSON defaultOptions) [ ''Creature , ''Intention ]