Files
loop/src/Dodge/Default/Creature.hs
T
2025-06-06 13:36:18 +01:00

139 lines
3.6 KiB
Haskell

module Dodge.Default.Creature where
import Control.Lens
import qualified Data.Map.Strict as M
import Dodge.Data.Creature
import Dodge.Data.FloatFunction
import Geometry.Data
import qualified IntMapHelp as IM
--import Picture
--import MaybeHelp
defaultCreature :: Creature
defaultCreature =
Creature
{ _crPos = V2 0 0
, _crOldPos = V2 0 0
, _crDir = 0
, _crMvDir = 0
, _crMvAim = 0
-- , _crTwist = 0
, _crID = 1
, _crType = ChaseCrit {_meleeCooldown = 0}
-- , _crRad = 10
, _crHP = 100
-- , _crMaxHP = 150
, _crInv = IM.empty
, _crManipulation = Manipulator SelNothing
, _crInvCapacity = 25
, _crInvLock = False
, _crState = defaultState
-- , _crCorpse = MakeDefaultCorpse
-- , _crMaterial = Flesh
, _crPastDamage = 0
-- , _crInvEquipped = mempty
, _crEquipment = M.empty
-- , _crInvHotkeys = mempty
-- , _crHotkeys = M.empty
, _crStance =
Stance
{ _carriage = Walking 0 WasLeftForward
, _posture = AtEase
, _strideLength = yourDefaultStrideLength
}
, _crVocalization = Mute
, _crActionPlan = ActionPlan [] [] (StrategyActions WatchAndWait [StartSentinelPost]) [LiveLongAndProsper]
, _crPerception = defaultPerceptionState
, _crMemory = defaultCreatureMemory
, _crFaction = NoFaction
, _crIntention = defaultIntention
, _crGroup = LoneWolf
, _crMvType = defaultAimMvType
-- , _crHammerPosition = HammerUp
, _crName = "DEFAULTCRNAME"
, _crStatistics = CreatureStatistics 50 50 50
, _crDeathTimer = 0
}
--defaultCreatureSkin :: CreatureType
--defaultCreatureSkin = Humanoid (greyN 0.9) (lightx4 green) (greyN 0.3) InanimateAI
defaultInanimate :: Creature
defaultInanimate = defaultCreature & crActionPlan .~ Inanimate
defaultCreatureMemory :: Memory
defaultCreatureMemory =
Memory
{ _soundsToInvestigate = []
, _nodesSearched = []
}
defaultInvSize :: Int
defaultInvSize = 20
defaultPerceptionState :: Perception
defaultPerceptionState =
Perception
{ _cpVigilance = Lethargic
, _cpAttention = AttentiveTo mempty
, _cpAwareness = mempty
, _cpVision = defaultVision
, _cpAudition = defaultAudition
}
defaultVision :: Vision
defaultVision =
Eyes
{ _viFOV = FloatFOV 0.8
, _viDist = FloatDistLinearNearFar 500 10 1
}
defaultAudition :: Audition
defaultAudition =
Ears
{ _auDist = FloatID
}
defaultIntention :: Intention
defaultIntention =
Intention
{ _targetCr = Nothing
, _mvToPoint = Nothing
, _viewPoint = Nothing
}
defaultChaseMvType :: CrMvType
defaultChaseMvType =
CrMvType
{ _mvSpeed = 2
, _mvTurnRad = FloatAbsCheckGreaterLess (pi / 4) 0.2 0.05
, _mvTurnJit = 0.2
, _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01
}
defaultAimMvType :: CrMvType
defaultAimMvType =
CrMvType
{ _mvSpeed = 3
, _mvTurnRad = FloatConst 0.2
, _mvTurnJit = 0.05
, _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01
}
defaultAimingCrit :: Creature
defaultAimingCrit = defaultCreature{_crMvType = defaultAimMvType}
yourDefaultSpeed :: Float
yourDefaultSpeed = 3
yourDefaultStrideLength :: Int
yourDefaultStrideLength = 40
defaultState :: CreatureState
defaultState =
CrSt
{ _csDamage = []
, _csSpState = GenCr
-- , _csDropsOnDeath = DropAll
}