From 581640c4d4ff00eab53666d6c15789ae0cdc2a58 Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Tue, 6 Dec 2016 22:51:12 +0100 Subject: [PATCH] Add a 'Canceled' activity state --- OpenRA.Game/Activities/Activity.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/OpenRA.Game/Activities/Activity.cs b/OpenRA.Game/Activities/Activity.cs index 9f41446a92..cd82fb454a 100644 --- a/OpenRA.Game/Activities/Activity.cs +++ b/OpenRA.Game/Activities/Activity.cs @@ -16,7 +16,7 @@ using OpenRA.Traits; namespace OpenRA.Activities { - public enum ActivityState { Queued, Active, Done } + public enum ActivityState { Queued, Active, Done, Canceled } /* * Activities are actions carried out by actors during each tick. @@ -99,7 +99,7 @@ namespace OpenRA.Activities { get { - return childActivity != null && childActivity.State != ActivityState.Done ? childActivity : null; + return childActivity != null && childActivity.State < ActivityState.Done ? childActivity : null; } set @@ -153,7 +153,7 @@ namespace OpenRA.Activities } public bool IsInterruptible { get; protected set; } - protected bool IsCanceled { get; private set; } + public bool IsCanceled { get { return State == ActivityState.Canceled; } } public Activity() { @@ -179,7 +179,9 @@ namespace OpenRA.Activities if (ParentActivity != null && ParentActivity != ret) ParentActivity.ChildActivity = ret; - State = ActivityState.Done; + if (State != ActivityState.Canceled) + State = ActivityState.Done; + OnLastRun(self); } @@ -206,7 +208,7 @@ namespace OpenRA.Activities if (ChildActivity != null && !ChildActivity.Cancel(self)) return false; - IsCanceled = true; + State = ActivityState.Canceled; NextActivity = null; ChildActivity = null;