Increase IMove.MoveTo call flexibility.
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user