Fix reversed impulse pathfinding bug
This commit is contained in:
@@ -62,17 +62,17 @@ performAimAt cr w tcid p = ([TurnToward tpos aimSp], Just $ AimAt tcid tpos)
|
||||
performPathTo :: Creature -> World -> Point2 -> OutAction
|
||||
performPathTo cr w p
|
||||
| dist cpos p <= crRad (cr ^. crType) = ([], Nothing)
|
||||
| isWalkable cpos p w = ([MvTurnToward p, MvForward, RandomTurn jit], Just (PathTo p))
|
||||
| otherwise = case pointTowardsImpulse p cpos w of
|
||||
| isWalkable cpos p w = ([MvTurnToward 0 cpos p p, MvForward, RandomTurn jit], Just (PathTo p))
|
||||
| otherwise = case pointTowardsImpulse cpos p w of
|
||||
Just q ->
|
||||
(
|
||||
[ MvTurnToward q
|
||||
[ MvTurnToward 1 cpos p q
|
||||
, MvForward
|
||||
, RandomTurn jit
|
||||
]
|
||||
, Just (PathTo p)
|
||||
)
|
||||
_ -> ([], Nothing)
|
||||
_ -> ([ChangeStrategy Flee], Nothing)
|
||||
where
|
||||
cpos = cr ^. crPos . _xy
|
||||
jit = _mvTurnJit $ crMvType cr
|
||||
@@ -80,7 +80,7 @@ performPathTo cr w p
|
||||
performTurnToA :: Creature -> Point2 -> OutAction
|
||||
performTurnToA cr p
|
||||
| angleVV cdirv dirv < 0.1 = ([], Nothing)
|
||||
| otherwise = ([MvTurnToward p, RandomTurn jit], Just (TurnToPoint p))
|
||||
| otherwise = ([MvTurnToward 2 p p p, RandomTurn jit], Just (TurnToPoint p))
|
||||
where
|
||||
cpos = cr ^. crPos . _xy
|
||||
cdirv = unitVectorAtAngle (_crDir cr)
|
||||
|
||||
@@ -67,7 +67,7 @@ followImpulse cr w imp = case imp of
|
||||
tcr <- w ^? cWorld . lWorld . creatures . ix i
|
||||
return $ followImpulse cr w (doCrImp f tcr)
|
||||
MvForward -> crup $ crMvForward speed (w ^. cWorld . lWorld) cr
|
||||
MvTurnToward p ->
|
||||
MvTurnToward _ _ _ p ->
|
||||
crup $
|
||||
creatureTurnToward p (turnRad $ safeAngleVV (p -.- cpos) (unitVectorAtAngle cdir)) cr
|
||||
where
|
||||
|
||||
@@ -119,7 +119,6 @@ flockACC w cr = fromMaybe cr $ do
|
||||
|
||||
chaseCritMv :: World -> Creature -> Creature
|
||||
chaseCritMv w cr = case _apStrategy (_crActionPlan cr) of
|
||||
StrategyActions _ _ -> cr
|
||||
WarningCry -> cr
|
||||
MeleeStrike -> cr
|
||||
CloseToMelee cid
|
||||
|
||||
@@ -31,7 +31,7 @@ data Impulse
|
||||
| RandomTurn Float
|
||||
| RandomImpulse RandImpulse -- (State StdGen Impulse)
|
||||
| TurnToward Point2 Float
|
||||
| MvTurnToward Point2
|
||||
| MvTurnToward Int Point2 Point2 Point2 -- the Int is just a label
|
||||
| MvForward
|
||||
| TurnTo Point2
|
||||
| UseItem
|
||||
|
||||
@@ -78,6 +78,7 @@ data Intention = Intention
|
||||
, _mvToPoint :: Maybe Point2
|
||||
, _viewPoint :: Maybe Point2
|
||||
}
|
||||
deriving (Show)
|
||||
|
||||
--deriving (Eq, Show, Read) --Generic, Flat)
|
||||
|
||||
|
||||
@@ -153,6 +153,7 @@ drawCrInfo u = foldMap f . IM.elems $ w ^. cWorld . lWorld . creatures
|
||||
, g "crAction" $ cr ^? crActionPlan . apAction
|
||||
, g "crImpulse" $ cr ^? crActionPlan . apImpulse
|
||||
, g "crName" $ cr ^? crName
|
||||
, g "crIntention" $ cr ^? crIntention
|
||||
]
|
||||
|
||||
setClip :: String -> Universe -> Universe
|
||||
|
||||
@@ -209,7 +209,7 @@ drawPathBetween u = concat $ do
|
||||
let nodepos = (`getNodePos` w)
|
||||
nodelist = makePathBetween sp ep w
|
||||
return . setLayer DebugLayer $
|
||||
color rose (foldMap (arrowPath . mapMaybe nodepos) nodelist)
|
||||
color rose (foldMap (arrowPath . mapMaybe nodepos) nodelist)
|
||||
<> drawCrossCol green sp
|
||||
<> drawCrossCol cyan ep
|
||||
<> foldMap (color green . arrow sp) (nodepos =<< walkableNodeNear w sp)
|
||||
|
||||
@@ -247,7 +247,8 @@ tutHub = do
|
||||
. (rmInPmnt .:~ (0, a))
|
||||
. addDoorAtNthLinkToggleTerminal 1 ss j
|
||||
=<< roomNgon 6 100
|
||||
bcor <- treeAttachDeep (return door) <$> blockedCorridor
|
||||
--bcor <- treeAttachDeep (return door) <$> blockedCorridor
|
||||
bcor <- treeAttachDeep (return door) <$> return (return $ cleatOnward door)
|
||||
r1 <- r burstRifle <&> rmPmnts .:~ t
|
||||
r2 <- r (drumMag & itConsumables ?~ 90)
|
||||
--r2 <- r (tinMag & itConsumables ?~ 500)
|
||||
|
||||
Reference in New Issue
Block a user