Add a backawrd moving option for mobile

This commit is contained in:
dnqbob
2021-05-02 18:42:53 +08:00
committed by Matthias Mailänder
parent 83357af14c
commit 9049ae6f20
2 changed files with 13 additions and 0 deletions

View File

@@ -41,6 +41,7 @@ namespace OpenRA.Mods.Common.Activities
List<CPos> path;
CPos? destination;
int startTicks;
// For dealing with blockers
bool hasWaited;
@@ -111,6 +112,8 @@ namespace OpenRA.Mods.Common.Activities
protected override void OnFirstRun(Actor self)
{
startTicks = self.World.WorldTick;
if (evaluateNearestMovableCell && destination.HasValue)
{
var movableDestination = mobile.NearestMoveableCell(destination.Value);
@@ -156,6 +159,10 @@ namespace OpenRA.Mods.Common.Activities
return false;
var firstFacing = self.World.Map.FacingBetween(mobile.FromCell, nextCell.Value.Cell, mobile.Facing);
if (mobile.Info.CanMoveBackward && self.World.WorldTick - startTicks < mobile.Info.BackwardDuration && Math.Abs(firstFacing.Angle - mobile.Facing.Angle) > 256)
firstFacing = new WAngle(firstFacing.Angle + 512);
if (firstFacing != mobile.Facing)
{
path.Add(nextCell.Value.Cell);