Fix undeploy orders always being queued.

This commit is contained in:
Paul Chote
2019-06-10 10:14:34 +01:00
committed by abcdefg30
parent b63792c73e
commit a8b7fcaf87
6 changed files with 23 additions and 0 deletions

View File

@@ -140,6 +140,9 @@ namespace OpenRA.Mods.Common.Activities
// Use self.CurrentActivity to capture the parent activity if Transform is a child
foreach (var transfer in currentActivity.ActivitiesImplementing<IssueOrderAfterTransform>(false))
{
if (transfer.IsCanceling)
continue;
var order = transfer.IssueOrderForTransformedActor(a);
foreach (var t in a.TraitsImplementing<IResolveOrder>())
t.ResolveOrder(a, order);

View File

@@ -125,7 +125,11 @@ namespace OpenRA.Mods.Common.Traits
if (transform == null && currentTransform == null)
return;
// Manually manage the inner activity queue
var activity = currentTransform ?? transform.GetTransformActivity(self);
if (!order.Queued && activity.NextActivity != null)
activity.NextActivity.Cancel(self);
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
if (currentTransform == null)

View File

@@ -81,7 +81,11 @@ namespace OpenRA.Mods.Common.Traits
self.SetTargetLine(order.Target, Color.Green);
// Manually manage the inner activity queue
var activity = currentTransform ?? transform.GetTransformActivity(self);
if (!order.Queued && activity.NextActivity != null)
activity.NextActivity.Cancel(self);
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
if (currentTransform == null)

View File

@@ -106,7 +106,11 @@ namespace OpenRA.Mods.Common.Traits
self.SetTargetLine(Target.FromCell(self.World, cell), Color.Green);
// Manually manage the inner activity queue
var activity = currentTransform ?? transform.GetTransformActivity(self);
if (!order.Queued && activity.NextActivity != null)
activity.NextActivity.Cancel(self);
activity.Queue(self, new IssueOrderAfterTransform("Move", order.Target));
if (currentTransform == null)

View File

@@ -115,7 +115,11 @@ namespace OpenRA.Mods.Common.Traits
self.SetTargetLine(order.Target, Color.Green);
// Manually manage the inner activity queue
var activity = currentTransform ?? transform.GetTransformActivity(self);
if (!order.Queued && activity.NextActivity != null)
activity.NextActivity.Cancel(self);
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
if (currentTransform == null)

View File

@@ -106,7 +106,11 @@ namespace OpenRA.Mods.Common.Traits
self.SetTargetLine(order.Target, Color.Green);
// Manually manage the inner activity queue
var activity = currentTransform ?? transform.GetTransformActivity(self);
if (!order.Queued && activity.NextActivity != null)
activity.NextActivity.Cancel(self);
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
if (currentTransform == null)