Move creature speed parameters into explicit data
This commit is contained in:
@@ -42,7 +42,15 @@ armourChaseCrit = defaultCreature
|
||||
]
|
||||
, _crMeleeCooldown = 0
|
||||
, _crGroup = ShieldGroup
|
||||
}
|
||||
, _crMvType = ChaseMvType
|
||||
{ _chaseSpeed = 2.5
|
||||
, _chaseTurnRad = f
|
||||
, _chaseTurnJit = 0.2
|
||||
}
|
||||
}
|
||||
where
|
||||
f x | x > pi / 4 = 0.2
|
||||
| otherwise = 0.05
|
||||
|
||||
flockACCR :: Creature -> Reader World Creature
|
||||
flockACCR = reader . flockACC
|
||||
|
||||
@@ -48,4 +48,12 @@ chaseCrit = defaultCreature
|
||||
, _crInv = IM.fromList [(0,medkit 200)]
|
||||
, _crMeleeCooldown = 0
|
||||
, _crFaction = ColorFaction green
|
||||
, _crMvType = ChaseMvType
|
||||
{ _chaseSpeed = 2.5
|
||||
, _chaseTurnRad = f
|
||||
, _chaseTurnJit = 0.2
|
||||
}
|
||||
}
|
||||
where
|
||||
f x | x > pi / 4 = 0.2
|
||||
| otherwise = 0.05
|
||||
|
||||
@@ -145,16 +145,16 @@ upperBody col cr = color (light4 col) $ pictures
|
||||
, shoulderH $ torso cr
|
||||
]
|
||||
|
||||
naked :: Color -> Creature -> Picture
|
||||
naked _ cr
|
||||
| strikeMelee = shoulderH . color white $ circleSolid $ _crRad cr
|
||||
| pdam > 200 = shoulderH . color red $ circleSolid $ _crRad cr
|
||||
| pdam > 99 = shoulderH . color white $ circleSolid $ _crRad cr
|
||||
| otherwise = []
|
||||
where
|
||||
strikeMelee = _crMeleeCooldown cr > 5
|
||||
pdam = sum $ concatMap (map _dmAmount) pastDams
|
||||
pastDams = _crPastDamage $ _crState cr
|
||||
--naked :: Color -> Creature -> Picture
|
||||
--naked _ cr
|
||||
-- | strikeMelee = shoulderH . color white $ circleSolid $ _crRad cr
|
||||
-- | pdam > 200 = shoulderH . color red $ circleSolid $ _crRad cr
|
||||
-- | pdam > 99 = shoulderH . color white $ circleSolid $ _crRad cr
|
||||
-- | otherwise = []
|
||||
-- where
|
||||
-- strikeMelee = _crMeleeCooldown cr > 5
|
||||
-- pdam = sum $ concatMap (map _dmAmount) pastDams
|
||||
-- pastDams = _crPastDamage $ _crState cr
|
||||
|
||||
shoulderH :: Picture -> Picture
|
||||
shoulderH = setDepth 20
|
||||
|
||||
@@ -41,17 +41,18 @@ chaseTargetR targFunc cr = reader $ \w -> case targFunc cr w of
|
||||
Just crTarg -> cr & crActionPlan . crImpulse .~ chaseTarg cr crTarg
|
||||
|
||||
chaseTarg :: Creature -> Creature -> [Impulse]
|
||||
chaseTarg cr crT
|
||||
| dist tpos cpos < combinedRad + 5
|
||||
&& abs (_crDir cr - argV (tpos -.- cpos)) < pi/4
|
||||
= [ TurnToward tpos 0.05 ]
|
||||
| abs (_crDir cr - argV (tpos -.- cpos)) < pi/4
|
||||
= [MoveForward 2.5 , TurnToward tpos 0.2, RandomTurn 0.2 ]
|
||||
| otherwise = [MoveForward 2.5 , TurnToward tpos 0.05, RandomTurn 0.2 ]
|
||||
chaseTarg cr crT = [MoveForward speed, TurnToward tpos (trad dirOffset), RandomTurn jit]
|
||||
where
|
||||
cpos = _crPos cr
|
||||
tpos = _crPos crT
|
||||
combinedRad = _crRad cr + _crRad crT
|
||||
mvType = _crMvType cr
|
||||
speed = _chaseSpeed mvType
|
||||
trad = _chaseTurnRad mvType
|
||||
jit = _chaseTurnJit mvType
|
||||
dirOffset = abs (_crDir cr - argV (tpos -.- cpos))
|
||||
-- | abs (_crDir cr - argV (tpos -.- cpos)) < pi/4
|
||||
-- = [MoveForward 2.5 , TurnToward tpos 0.2, RandomTurn 0.2 ]
|
||||
-- | otherwise = [MoveForward 2.5 , TurnToward tpos 0.05, RandomTurn 0.2 ]
|
||||
|
||||
doStrategyActionsR
|
||||
:: Creature
|
||||
|
||||
@@ -220,7 +220,15 @@ data Creature = Creature
|
||||
, _crFaction :: Faction
|
||||
, _crGroup :: CrGroup
|
||||
, _crTarget :: Maybe Creature
|
||||
, _crMvType :: CrMvType
|
||||
}
|
||||
data CrMvType
|
||||
= DefCrMvType
|
||||
| ChaseMvType
|
||||
{ _chaseSpeed :: Float
|
||||
, _chaseTurnRad :: Float -> Float
|
||||
, _chaseTurnJit :: Float
|
||||
}
|
||||
data WorldState
|
||||
= DoorNumOpen Int
|
||||
| CrNumAlive Int
|
||||
|
||||
@@ -56,6 +56,7 @@ defaultCreature = Creature
|
||||
, _crFaction = NoFaction
|
||||
, _crTarget = Nothing
|
||||
, _crGroup = LoneWolf
|
||||
, _crMvType = DefCrMvType
|
||||
}
|
||||
defaultState :: CreatureState
|
||||
defaultState = CrSt
|
||||
|
||||
Reference in New Issue
Block a user