Fix undeploy orders always being queued.
This commit is contained in:
@@ -140,6 +140,9 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
// Use self.CurrentActivity to capture the parent activity if Transform is a child
|
// Use self.CurrentActivity to capture the parent activity if Transform is a child
|
||||||
foreach (var transfer in currentActivity.ActivitiesImplementing<IssueOrderAfterTransform>(false))
|
foreach (var transfer in currentActivity.ActivitiesImplementing<IssueOrderAfterTransform>(false))
|
||||||
{
|
{
|
||||||
|
if (transfer.IsCanceling)
|
||||||
|
continue;
|
||||||
|
|
||||||
var order = transfer.IssueOrderForTransformedActor(a);
|
var order = transfer.IssueOrderForTransformedActor(a);
|
||||||
foreach (var t in a.TraitsImplementing<IResolveOrder>())
|
foreach (var t in a.TraitsImplementing<IResolveOrder>())
|
||||||
t.ResolveOrder(a, order);
|
t.ResolveOrder(a, order);
|
||||||
|
|||||||
@@ -125,7 +125,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (transform == null && currentTransform == null)
|
if (transform == null && currentTransform == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Manually manage the inner activity queue
|
||||||
var activity = currentTransform ?? transform.GetTransformActivity(self);
|
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));
|
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
|
||||||
|
|
||||||
if (currentTransform == null)
|
if (currentTransform == null)
|
||||||
|
|||||||
@@ -81,7 +81,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
self.SetTargetLine(order.Target, Color.Green);
|
self.SetTargetLine(order.Target, Color.Green);
|
||||||
|
|
||||||
|
// Manually manage the inner activity queue
|
||||||
var activity = currentTransform ?? transform.GetTransformActivity(self);
|
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));
|
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
|
||||||
|
|
||||||
if (currentTransform == null)
|
if (currentTransform == null)
|
||||||
|
|||||||
@@ -106,7 +106,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
self.SetTargetLine(Target.FromCell(self.World, cell), Color.Green);
|
self.SetTargetLine(Target.FromCell(self.World, cell), Color.Green);
|
||||||
|
|
||||||
|
// Manually manage the inner activity queue
|
||||||
var activity = currentTransform ?? transform.GetTransformActivity(self);
|
var activity = currentTransform ?? transform.GetTransformActivity(self);
|
||||||
|
if (!order.Queued && activity.NextActivity != null)
|
||||||
|
activity.NextActivity.Cancel(self);
|
||||||
|
|
||||||
activity.Queue(self, new IssueOrderAfterTransform("Move", order.Target));
|
activity.Queue(self, new IssueOrderAfterTransform("Move", order.Target));
|
||||||
|
|
||||||
if (currentTransform == null)
|
if (currentTransform == null)
|
||||||
|
|||||||
@@ -115,7 +115,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
self.SetTargetLine(order.Target, Color.Green);
|
self.SetTargetLine(order.Target, Color.Green);
|
||||||
|
|
||||||
|
// Manually manage the inner activity queue
|
||||||
var activity = currentTransform ?? transform.GetTransformActivity(self);
|
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));
|
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
|
||||||
|
|
||||||
if (currentTransform == null)
|
if (currentTransform == null)
|
||||||
|
|||||||
@@ -106,7 +106,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
self.SetTargetLine(order.Target, Color.Green);
|
self.SetTargetLine(order.Target, Color.Green);
|
||||||
|
|
||||||
|
// Manually manage the inner activity queue
|
||||||
var activity = currentTransform ?? transform.GetTransformActivity(self);
|
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));
|
activity.Queue(self, new IssueOrderAfterTransform(order.OrderString, order.Target));
|
||||||
|
|
||||||
if (currentTransform == null)
|
if (currentTransform == null)
|
||||||
|
|||||||
Reference in New Issue
Block a user