Remove SequenceActivities.

This commit is contained in:
tovl
2019-07-20 01:10:21 +02:00
committed by reaperrr
parent 86c8dfe96e
commit c5558e2145
4 changed files with 12 additions and 20 deletions

View File

@@ -50,11 +50,5 @@ namespace OpenRA.Traits
return act;
}
public static Activity SequenceActivities(params Activity[] acts)
{
return acts.Reverse().Aggregate(
(next, a) => { a.Queue(next); return a; });
}
}
}

View File

@@ -99,23 +99,19 @@ namespace OpenRA.Mods.Common.Activities
(closeEnough.LengthSquared > 0 && !host.IsInRange(self.CenterPosition, closeEnough)))
{
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.
// TODO: Get rid of this or at least replace it with something less hacky.
if (repairableNear == null)
movement.Add(move.MoveTo(targetCell, host.Actor));
var moveActivities = ActivityUtils.SequenceActivities(movement.ToArray());
QueueChild(move.MoveTo(targetCell, host.Actor));
var delta = (self.CenterPosition - host.CenterPosition).LengthSquared;
var transport = transportCallers.FirstOrDefault(t => t.MinimumDistance.LengthSquared < delta);
if (transport != null)
transport.RequestTransport(self, targetCell);
QueueChild(moveActivities);
return false;
}

View File

@@ -858,9 +858,9 @@ namespace OpenRA.Mods.Common.Traits
public Activity VisualMove(Actor self, WPos fromPos, WPos toPos)
{
// TODO: Ignore repulsion when moving
return ActivityUtils.SequenceActivities(
new CallFunc(() => SetVisualPosition(self, fromPos)),
new Fly(self, Target.FromPos(toPos)));
var activities = new CallFunc(() => SetVisualPosition(self, fromPos));
activities.Queue(new Fly(self, Target.FromPos(toPos)));
return activities;
}
public int EstimatedMoveDuration(Actor self, WPos fromPos, WPos toPos)

View File

@@ -319,10 +319,9 @@ namespace OpenRA.Mods.Common.Traits
if (cellInfo != null)
{
self.CancelActivity();
var notifyBlocking = new CallFunc(() => self.NotifyBlocker(cellInfo.Cell));
var waitFor = new WaitFor(() => CanEnterCell(cellInfo.Cell));
var move = new Move(self, cellInfo.Cell);
self.QueueActivity(ActivityUtils.SequenceActivities(notifyBlocking, waitFor, move));
self.QueueActivity(new CallFunc(() => self.NotifyBlocker(cellInfo.Cell)));
self.QueueActivity(new WaitFor(() => CanEnterCell(cellInfo.Cell)));
self.QueueActivity(new Move(self, cellInfo.Cell));
Log.Write("debug", "OnNudge (notify next blocking actor, wait and move) #{0} from {1} to {2}",
self.ActorID, self.Location, cellInfo.Cell);
@@ -691,7 +690,10 @@ namespace OpenRA.Mods.Common.Traits
var delta = toPos - fromPos;
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()