From b2b3390bc00c713cdc822e3c47254e7e4382e47f Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 15 Oct 2016 18:14:24 +0200 Subject: [PATCH 1/2] Move GrantConditionOnPrerequisite into the Conditions folder --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 2 +- .../Traits/{ => Conditions}/GrantConditionOnPrerequisite.cs | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename OpenRA.Mods.Common/Traits/{ => Conditions}/GrantConditionOnPrerequisite.cs (100%) diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 2c89600621..1d05253fa4 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -333,7 +333,6 @@ - @@ -499,6 +498,7 @@ + diff --git a/OpenRA.Mods.Common/Traits/GrantConditionOnPrerequisite.cs b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs similarity index 100% rename from OpenRA.Mods.Common/Traits/GrantConditionOnPrerequisite.cs rename to OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs From e1dda2bf54096abe7a113a6d7f916d471b805fa4 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 15 Oct 2016 18:14:24 +0200 Subject: [PATCH 2/2] Fix GrantConditionOnPrerequisite not refreshing when the actor's owner changes --- .../Conditions/GrantConditionOnPrerequisite.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs index 6cff1f85c9..6f1394b25e 100644 --- a/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs +++ b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnPrerequisite.cs @@ -29,15 +29,14 @@ namespace OpenRA.Mods.Common.Traits public object Create(ActorInitializer init) { return new GrantConditionOnPrerequisite(init.Self, this); } } - public class GrantConditionOnPrerequisite : INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld + public class GrantConditionOnPrerequisite : INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld, INotifyOwnerChanged { readonly GrantConditionOnPrerequisiteInfo info; - readonly GrantConditionOnPrerequisiteManager globalManager; - - ConditionManager conditionManager; - int conditionToken = ConditionManager.InvalidConditionToken; bool wasAvailable; + ConditionManager conditionManager; + GrantConditionOnPrerequisiteManager globalManager; + int conditionToken = ConditionManager.InvalidConditionToken; public GrantConditionOnPrerequisite(Actor self, GrantConditionOnPrerequisiteInfo info) { @@ -62,6 +61,11 @@ namespace OpenRA.Mods.Common.Traits globalManager.Unregister(self, this, info.Prerequisites); } + void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner) + { + globalManager = newOwner.PlayerActor.Trait(); + } + public void PrerequisitesUpdated(Actor self, bool available) { if (available == wasAvailable || conditionManager == null)