Always check if activity state is Done.
This commit is contained in:
@@ -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<T> ActivitiesImplementing<T>(bool includeChildren = true) where T : IActivityInterface
|
||||
{
|
||||
if (includeChildren && childActivity != null)
|
||||
foreach (var a in childActivity.ActivitiesImplementing<T>())
|
||||
if (includeChildren && ChildActivity != null)
|
||||
foreach (var a in ChildActivity.ActivitiesImplementing<T>())
|
||||
yield return a;
|
||||
|
||||
if (this is T)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user