From e1dda2bf54096abe7a113a6d7f916d471b805fa4 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 15 Oct 2016 18:14:24 +0200 Subject: [PATCH] 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)