{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Creature.State.Data where --import Geometry import Geometry.Data import Dodge.Data.DamageType import Color import Control.Lens import qualified Data.IntSet as IS import qualified Data.Vector as V data CreatureState = CrSt { _crDamage :: [Damage] , _crPastDamage :: V.Vector [Damage] , _crSpState :: CrSpState , _crDropsOnDeath :: CreatureDropType } data CreatureDropType = DropAll | DropAmount Int | DropSpecific [Int] data CrSpState = Barrel { _piercedPoints :: [Point2]} | GenCr deriving (Eq,Show,Ord) data Faction = GenericFaction Int | ZombieFaction | EncircleFlock | ChaseCritters | SpawnedBy Int | NoFaction | ColorFaction Color | PlayerFaction deriving (Eq,Show) data CrGroup = LoneWolf | Swarm { _swarm :: IS.IntSet , _crGroupID :: Int } | CrGroupID { _crGroupID :: Int } | ShieldGroup deriving (Eq, Show) makeLenses ''CreatureState makeLenses ''CrSpState