Remove SequenceActivities.
This commit is contained in:
@@ -50,11 +50,5 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
return act;
|
return act;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Activity SequenceActivities(params Activity[] acts)
|
|
||||||
{
|
|
||||||
return acts.Reverse().Aggregate(
|
|
||||||
(next, a) => { a.Queue(next); return a; });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,23 +99,19 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
(closeEnough.LengthSquared > 0 && !host.IsInRange(self.CenterPosition, closeEnough)))
|
(closeEnough.LengthSquared > 0 && !host.IsInRange(self.CenterPosition, closeEnough)))
|
||||||
{
|
{
|
||||||
var targetCell = self.World.Map.CellContaining(host.Actor.CenterPosition);
|
var targetCell = self.World.Map.CellContaining(host.Actor.CenterPosition);
|
||||||
List<Activity> movement = new List<Activity>();
|
|
||||||
|
|
||||||
movement.Add(move.MoveWithinRange(host, closeEnough, targetLineColor: Color.Green));
|
QueueChild(move.MoveWithinRange(host, closeEnough, targetLineColor: Color.Green));
|
||||||
|
|
||||||
// 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)
|
||||||
movement.Add(move.MoveTo(targetCell, host.Actor));
|
QueueChild(move.MoveTo(targetCell, host.Actor));
|
||||||
|
|
||||||
var moveActivities = ActivityUtils.SequenceActivities(movement.ToArray());
|
|
||||||
|
|
||||||
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);
|
||||||
if (transport != null)
|
if (transport != null)
|
||||||
transport.RequestTransport(self, targetCell);
|
transport.RequestTransport(self, targetCell);
|
||||||
|
|
||||||
QueueChild(moveActivities);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -858,9 +858,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public Activity VisualMove(Actor self, WPos fromPos, WPos toPos)
|
public Activity VisualMove(Actor self, WPos fromPos, WPos toPos)
|
||||||
{
|
{
|
||||||
// TODO: Ignore repulsion when moving
|
// TODO: Ignore repulsion when moving
|
||||||
return ActivityUtils.SequenceActivities(
|
var activities = new CallFunc(() => SetVisualPosition(self, fromPos));
|
||||||
new CallFunc(() => SetVisualPosition(self, fromPos)),
|
activities.Queue(new Fly(self, Target.FromPos(toPos)));
|
||||||
new Fly(self, Target.FromPos(toPos)));
|
return activities;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int EstimatedMoveDuration(Actor self, WPos fromPos, WPos toPos)
|
public int EstimatedMoveDuration(Actor self, WPos fromPos, WPos toPos)
|
||||||
|
|||||||
@@ -319,10 +319,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (cellInfo != null)
|
if (cellInfo != null)
|
||||||
{
|
{
|
||||||
self.CancelActivity();
|
self.CancelActivity();
|
||||||
var notifyBlocking = new CallFunc(() => self.NotifyBlocker(cellInfo.Cell));
|
self.QueueActivity(new CallFunc(() => self.NotifyBlocker(cellInfo.Cell)));
|
||||||
var waitFor = new WaitFor(() => CanEnterCell(cellInfo.Cell));
|
self.QueueActivity(new WaitFor(() => CanEnterCell(cellInfo.Cell)));
|
||||||
var move = new Move(self, cellInfo.Cell);
|
self.QueueActivity(new Move(self, cellInfo.Cell));
|
||||||
self.QueueActivity(ActivityUtils.SequenceActivities(notifyBlocking, waitFor, move));
|
|
||||||
|
|
||||||
Log.Write("debug", "OnNudge (notify next blocking actor, wait and move) #{0} from {1} to {2}",
|
Log.Write("debug", "OnNudge (notify next blocking actor, wait and move) #{0} from {1} to {2}",
|
||||||
self.ActorID, self.Location, cellInfo.Cell);
|
self.ActorID, self.Location, cellInfo.Cell);
|
||||||
@@ -691,7 +690,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
var delta = toPos - fromPos;
|
var delta = toPos - fromPos;
|
||||||
var facing = delta.HorizontalLengthSquared != 0 ? delta.Yaw.Facing : Facing;
|
var facing = delta.HorizontalLengthSquared != 0 ? delta.Yaw.Facing : Facing;
|
||||||
return ActivityUtils.SequenceActivities(new Turn(self, facing), new Drag(self, fromPos, toPos, length));
|
|
||||||
|
var activities = new Turn(self, facing);
|
||||||
|
activities.Queue(new Drag(self, fromPos, toPos, length));
|
||||||
|
return activities;
|
||||||
}
|
}
|
||||||
|
|
||||||
CPos? ClosestGroundCell()
|
CPos? ClosestGroundCell()
|
||||||
|
|||||||
Reference in New Issue
Block a user