Work on flying creature inertia
This commit is contained in:
+25
-25
@@ -55,30 +55,30 @@ doCrWdAc cw = case cw of
|
||||
-- $
|
||||
-- DoReplicate t $
|
||||
-- foldr DoActionThen NoAction as
|
||||
ChooseMovementSpreadGun -> chooseMovementSpreadGun
|
||||
-- ChooseMovementSpreadGun -> chooseMovementSpreadGun
|
||||
ChooseMovementLtAuto -> chooseMovementLtAuto
|
||||
|
||||
chooseMovementSpreadGun :: Creature -> World -> Action
|
||||
chooseMovementSpreadGun cr w
|
||||
| dist cpos p < 30 && safeAngleVV (p -.- cpos) (unitVectorAtAngle (_crDir cr)) > pi =
|
||||
DoImpulses [UseItem, MoveForward (-3)]
|
||||
| d < 30 = DoImpulses [UseItem, TurnToward p 0.06]
|
||||
| d < 60 = DoImpulses [UseItem, TurnToward p 0.06, MoveForward 3]
|
||||
| d < 100 = DoImpulses [TurnToward p 0.06, MoveForward 3]
|
||||
| d < 200 = DoImpulses [TurnToward p (0.06 + 0.002 * (d -100)), MoveForward 3]
|
||||
| otherwise =
|
||||
DoImpulses [TurnToward p 0.26, MoveForward 3]
|
||||
where
|
||||
d = dist cpos p
|
||||
cpos = cr ^. crPos . _xy
|
||||
--tcr = _creatures (_cWorld w) IM.! 0
|
||||
tcr = w ^?! cWorld . lWorld . creatures . ix 0
|
||||
p = tcr ^. crPos . _xy
|
||||
--chooseMovementSpreadGun :: Creature -> World -> Action
|
||||
--chooseMovementSpreadGun cr w
|
||||
-- | dist cpos p < 30 && safeAngleVV (p -.- cpos) (unitVectorAtAngle (_crDir cr)) > pi =
|
||||
-- DoImpulses [UseItem, MoveForward (-3)]
|
||||
-- | d < 30 = DoImpulses [UseItem, TurnToward p 0.06]
|
||||
-- | d < 60 = DoImpulses [UseItem, TurnToward p 0.06, MoveForward 3]
|
||||
-- | d < 100 = DoImpulses [TurnToward p 0.06, MoveForward 3]
|
||||
-- | d < 200 = DoImpulses [TurnToward p (0.06 + 0.002 * (d -100)), MoveForward 3]
|
||||
-- | otherwise =
|
||||
-- DoImpulses [TurnToward p 0.26, MoveForward 3]
|
||||
-- where
|
||||
-- d = dist cpos p
|
||||
-- cpos = cr ^. crPos . _xy
|
||||
-- --tcr = _creatures (_cWorld w) IM.! 0
|
||||
-- tcr = w ^?! cWorld . lWorld . creatures . ix 0
|
||||
-- p = tcr ^. crPos . _xy
|
||||
|
||||
chooseMovementLtAuto :: Creature -> World -> Action
|
||||
chooseMovementLtAuto cr w
|
||||
| dist cpos p > 200 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward 3]
|
||||
| dist cpos p < 80 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward (-3)]
|
||||
-- | dist cpos p > 200 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward 3]
|
||||
-- | dist cpos p < 80 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward (-3)]
|
||||
| errorAngleVV 22 (p' -.- cpos) (unitVectorAtAngle (_crDir cr)) < 0.4 =
|
||||
DoImpulses [UseItem, TurnToward p' 0.01, Move (V2 0 3)]
|
||||
| otherwise =
|
||||
@@ -90,9 +90,9 @@ chooseMovementLtAuto cr w
|
||||
v = vNormal $ p -.- cpos
|
||||
p' = p +.+ 0.5 *.* (v -.- 20 *.* normalizeV v)
|
||||
|
||||
fleeFrom :: Creature -> Maybe Creature -> Action
|
||||
fleeFrom cr mtcr = case mtcr of
|
||||
Just tcr -> DoImpulses
|
||||
[MoveForward 3
|
||||
, TurnToward ((2 *.* (cr ^. crPos ._xy)) -.- (tcr ^. crPos . _xy)) (pi / 4)]
|
||||
Nothing -> NoAction
|
||||
--fleeFrom :: Creature -> Maybe Creature -> Action
|
||||
--fleeFrom cr mtcr = case mtcr of
|
||||
-- Just tcr -> DoImpulses
|
||||
-- [MoveForward 3
|
||||
-- , TurnToward ((2 *.* (cr ^. crPos ._xy)) -.- (tcr ^. crPos . _xy)) (pi / 4)]
|
||||
-- Nothing -> NoAction
|
||||
|
||||
Reference in New Issue
Block a user