From 09c1611239b9a5327a9ba1fcef86ef7eca6ba565 Mon Sep 17 00:00:00 2001 From: tovl Date: Sun, 12 May 2019 19:11:34 +0200 Subject: [PATCH] Always check if activity state is Done. --- OpenRA.Game/Activities/Activity.cs | 16 +++++----------- OpenRA.Game/Settings.cs | 3 --- .../Widgets/Logic/SettingsLogic.cs | 1 - mods/cnc/chrome/settings.yaml | 7 ------- mods/common/chrome/settings.yaml | 8 -------- 5 files changed, 5 insertions(+), 30 deletions(-) diff --git a/OpenRA.Game/Activities/Activity.cs b/OpenRA.Game/Activities/Activity.cs index 2d796bf124..ad5f796fc8 100644 --- a/OpenRA.Game/Activities/Activity.cs +++ b/OpenRA.Game/Activities/Activity.cs @@ -31,13 +31,7 @@ namespace OpenRA.Activities { public ActivityState State { get; private set; } - Activity childActivity; - protected Activity ChildActivity - { - get { return childActivity != null && childActivity.State < ActivityState.Done ? childActivity : null; } - set { childActivity = value; } - } - + protected Activity ChildActivity { get; private set; } public Activity NextActivity { get; protected set; } public bool IsInterruptible { get; protected set; } @@ -52,7 +46,7 @@ namespace OpenRA.Activities public Activity TickOuter(Actor self) { - if (State == ActivityState.Done && Game.Settings.Debug.StrictActivityChecking) + if (State == ActivityState.Done) throw new InvalidOperationException("Actor {0} attempted to tick activity {1} after it had already completed.".F(self, GetType())); if (State == ActivityState.Queued) @@ -188,14 +182,14 @@ namespace OpenRA.Activities while (act != null) { yield return act.GetType().Name; - act = act.childActivity; + act = act.ChildActivity; } } public IEnumerable ActivitiesImplementing(bool includeChildren = true) where T : IActivityInterface { - if (includeChildren && childActivity != null) - foreach (var a in childActivity.ActivitiesImplementing()) + if (includeChildren && ChildActivity != null) + foreach (var a in ChildActivity.ActivitiesImplementing()) yield return a; if (this is T) diff --git a/OpenRA.Game/Settings.cs b/OpenRA.Game/Settings.cs index c137dd9f6f..7b52a7a317 100644 --- a/OpenRA.Game/Settings.cs +++ b/OpenRA.Game/Settings.cs @@ -128,9 +128,6 @@ namespace OpenRA [Desc("Throw an exception if the world sync hash changes while evaluating BotModules.")] public bool SyncCheckBotModuleCode = false; - - [Desc("Throw an exception if an actor activity is ticked after it has been marked as completed.")] - public bool StrictActivityChecking = false; } public class GraphicSettings diff --git a/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs index b2cda000a7..8b86a18e0a 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs @@ -556,7 +556,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic BindCheckboxPref(panel, "REPLAY_COMMANDS_CHECKBOX", ds, "EnableDebugCommandsInReplays"); BindCheckboxPref(panel, "CHECKUNSYNCED_CHECKBOX", ds, "SyncCheckUnsyncedCode"); BindCheckboxPref(panel, "CHECKBOTSYNC_CHECKBOX", ds, "SyncCheckBotModuleCode"); - BindCheckboxPref(panel, "STRICTACTIVITY_CHECKBOX", ds, "StrictActivityChecking"); panel.Get("DEBUG_OPTIONS").IsVisible = () => ds.DisplayDeveloperSettings; panel.Get("DEBUG_HIDDEN_LABEL").IsVisible = () => !ds.DisplayDeveloperSettings; diff --git a/mods/cnc/chrome/settings.yaml b/mods/cnc/chrome/settings.yaml index bd16d36080..c8c55b9229 100644 --- a/mods/cnc/chrome/settings.yaml +++ b/mods/cnc/chrome/settings.yaml @@ -659,13 +659,6 @@ Container@SETTINGS_PANEL: Height: 20 Font: Regular Text: Enable Debug Commands in Replays - Checkbox@STRICTACTIVITY_CHECKBOX: - X: 310 - Y: 280 - Width: 300 - Height: 20 - Font: Regular - Text: Strict Activity checking Button@BACK_BUTTON: Key: escape Y: 393 diff --git a/mods/common/chrome/settings.yaml b/mods/common/chrome/settings.yaml index ec646a6a34..37cf56bca8 100644 --- a/mods/common/chrome/settings.yaml +++ b/mods/common/chrome/settings.yaml @@ -669,11 +669,3 @@ Background@SETTINGS_PANEL: Height: 20 Font: Regular Text: Enable Debug Commands in Replays - Checkbox@STRICTACTIVITY_CHECKBOX: - X: 310 - Y: 280 - Width: 300 - Height: 20 - Font: Regular - Text: Strict Activity checking - TooltipContainer@TOOLTIP_CONTAINER: