Increase IMove.MoveTo call flexibility.

This commit is contained in:
tovl
2019-09-06 21:48:15 +02:00
committed by abcdefg30
parent 28dbda29e3
commit 3236499fb7
7 changed files with 14 additions and 22 deletions

View File

@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Cnc.Activities
// Add a CloseEnough range of 512 to the Rearm/Repair activities in order to ensure that we're at the host actor // Add a CloseEnough range of 512 to the Rearm/Repair activities in order to ensure that we're at the host actor
QueueChild(new MoveAdjacentTo(self, Target.FromActor(rearmTarget))); QueueChild(new MoveAdjacentTo(self, Target.FromActor(rearmTarget)));
QueueChild(movement.MoveTo(self.World.Map.CellContaining(rearmTarget.CenterPosition), rearmTarget)); QueueChild(movement.MoveTo(self.World.Map.CellContaining(rearmTarget.CenterPosition), ignoreActor: rearmTarget));
QueueChild(new Resupply(self, rearmTarget, new WDist(512))); QueueChild(new Resupply(self, rearmTarget, new WDist(512)));
returnToBase = true; returnToBase = true;
return false; return false;

View File

@@ -118,7 +118,7 @@ namespace OpenRA.Mods.Cnc.Traits
self.QueueActivity(move.MoveWithinRange(order.Target, WDist.FromCells(maxDistance.Value), targetLineColor: Color.LawnGreen)); self.QueueActivity(move.MoveWithinRange(order.Target, WDist.FromCells(maxDistance.Value), targetLineColor: Color.LawnGreen));
self.QueueActivity(new Teleport(self, cell, maxDistance, Info.KillCargo, Info.FlashScreen, Info.ChronoshiftSound)); self.QueueActivity(new Teleport(self, cell, maxDistance, Info.KillCargo, Info.FlashScreen, Info.ChronoshiftSound));
self.QueueActivity(move.MoveTo(cell, 5, Color.LawnGreen)); self.QueueActivity(move.MoveTo(cell, 5, targetLineColor: Color.LawnGreen));
self.ShowTargetLines(); self.ShowTargetLines();
} }
} }

View File

@@ -180,8 +180,8 @@ namespace OpenRA.Mods.Cnc.Traits
self.World.UpdateMaps(self, this); self.World.UpdateMaps(self, this);
} }
public Activity MoveTo(CPos cell, int nearEnough, Color? targetLineColor = null) { return null; } public Activity MoveTo(CPos cell, int nearEnough = 0, Actor ignoreActor = null,
public Activity MoveTo(CPos cell, Actor ignoreActor, Color? targetLineColor = null) { return null; } bool evaluateNearestMovableCell = false, Color? targetLineColor = null) { return null; }
public Activity MoveWithinRange(Target target, WDist range, public Activity MoveWithinRange(Target target, WDist range,
WPos? initialTargetPosition = null, Color? targetLineColor = null) { return null; } WPos? initialTargetPosition = null, Color? targetLineColor = null) { return null; }
public Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange, public Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange,

View File

@@ -127,7 +127,7 @@ namespace OpenRA.Mods.Common.Activities
// HACK: Repairable needs the actor to move to host center. // HACK: Repairable needs the actor to move to host center.
// TODO: Get rid of this or at least replace it with something less hacky. // TODO: Get rid of this or at least replace it with something less hacky.
if (repairableNear == null) if (repairableNear == null)
QueueChild(move.MoveTo(targetCell, host.Actor)); QueueChild(move.MoveTo(targetCell, ignoreActor: host.Actor));
var delta = (self.CenterPosition - host.CenterPosition).LengthSquared; var delta = (self.CenterPosition - host.CenterPosition).LengthSquared;
var transport = transportCallers.FirstOrDefault(t => t.MinimumDistance.LengthSquared < delta); var transport = transportCallers.FirstOrDefault(t => t.MinimumDistance.LengthSquared < delta);
@@ -188,7 +188,7 @@ namespace OpenRA.Mods.Common.Activities
if (wasRepaired || isHostInvalid || (!stayOnResupplier && aircraft.Info.TakeOffOnResupply)) if (wasRepaired || isHostInvalid || (!stayOnResupplier && aircraft.Info.TakeOffOnResupply))
{ {
if (self.CurrentActivity.NextActivity == null && rp != null) if (self.CurrentActivity.NextActivity == null && rp != null)
QueueChild(move.MoveTo(rp.Location, repairableNear != null ? null : host.Actor, targetLineColor: Color.Green)); QueueChild(move.MoveTo(rp.Location, ignoreActor: repairableNear != null ? null : host.Actor, targetLineColor: Color.Green));
else else
QueueChild(new TakeOff(self)); QueueChild(new TakeOff(self));
@@ -208,7 +208,7 @@ namespace OpenRA.Mods.Common.Activities
if (self.CurrentActivity.NextActivity == null) if (self.CurrentActivity.NextActivity == null)
{ {
if (rp != null) if (rp != null)
QueueChild(move.MoveTo(rp.Location, repairableNear != null ? null : host.Actor)); QueueChild(move.MoveTo(rp.Location, ignoreActor: repairableNear != null ? null : host.Actor));
else if (repairableNear == null) else if (repairableNear == null)
QueueChild(move.MoveToTarget(self, host)); QueueChild(move.MoveToTarget(self, host));
} }

View File

@@ -814,16 +814,12 @@ namespace OpenRA.Mods.Common.Traits
#region Implement IMove #region Implement IMove
public Activity MoveTo(CPos cell, int nearEnough, Color? targetLineColor = null) public Activity MoveTo(CPos cell, int nearEnough = 0, Actor ignoreActor = null,
bool evaluateNearestMovableCell = false, Color? targetLineColor = null)
{ {
return new Fly(self, Target.FromCell(self.World, cell), WDist.FromCells(nearEnough), targetLineColor: targetLineColor); return new Fly(self, Target.FromCell(self.World, cell), WDist.FromCells(nearEnough), targetLineColor: targetLineColor);
} }
public Activity MoveTo(CPos cell, Actor ignoreActor, Color? targetLineColor = null)
{
return new Fly(self, Target.FromCell(self.World, cell), targetLineColor: targetLineColor);
}
public Activity MoveWithinRange(Target target, WDist range, public Activity MoveWithinRange(Target target, WDist range,
WPos? initialTargetPosition = null, Color? targetLineColor = null) WPos? initialTargetPosition = null, Color? targetLineColor = null)
{ {

View File

@@ -589,14 +589,10 @@ namespace OpenRA.Mods.Common.Traits
return inner; return inner;
} }
public Activity MoveTo(CPos cell, int nearEnough, Color? targetLineColor = null) public Activity MoveTo(CPos cell, int nearEnough = 0, Actor ignoreActor = null,
bool evaluateNearestMovableCell = false, Color? targetLineColor = null)
{ {
return WrapMove(new Move(self, cell, WDist.FromCells(nearEnough), targetLineColor: targetLineColor)); return WrapMove(new Move(self, cell, WDist.FromCells(nearEnough), ignoreActor, evaluateNearestMovableCell, targetLineColor));
}
public Activity MoveTo(CPos cell, Actor ignoreActor, Color? targetLineColor = null)
{
return WrapMove(new Move(self, cell, WDist.Zero, ignoreActor, targetLineColor: targetLineColor));
} }
public Activity MoveWithinRange(Target target, WDist range, public Activity MoveWithinRange(Target target, WDist range,

View File

@@ -425,8 +425,8 @@ namespace OpenRA.Mods.Common.Traits
public interface IMove public interface IMove
{ {
Activity MoveTo(CPos cell, int nearEnough, Color? targetLineColor = null); Activity MoveTo(CPos cell, int nearEnough = 0, Actor ignoreActor = null,
Activity MoveTo(CPos cell, Actor ignoreActor, Color? targetLineColor = null); bool evaluateNearestMovableCell = false, Color? targetLineColor = null);
Activity MoveWithinRange(Target target, WDist range, Activity MoveWithinRange(Target target, WDist range,
WPos? initialTargetPosition = null, Color? targetLineColor = null); WPos? initialTargetPosition = null, Color? targetLineColor = null);
Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange, Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange,