From a8471d9f547893a4159da6d2d7eab0069a7f1d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 2 Apr 2016 13:01:35 +0200 Subject: [PATCH] Disable Gps when tech center is disabled. --- .../Traits/SupportPowers/GpsPower.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs index 3742762a6d..11b74f4e00 100644 --- a/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs +++ b/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs @@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Traits public override object Create(ActorInitializer init) { return new GpsPower(init.Self, this); } } - class GpsPower : SupportPower, INotifyKilled, INotifySold, INotifyOwnerChanged + class GpsPower : SupportPower, INotifyKilled, INotifySold, INotifyOwnerChanged, ITick { readonly GpsPowerInfo info; GpsWatcher owner; @@ -83,5 +83,21 @@ namespace OpenRA.Mods.RA.Traits owner = newOwner.PlayerActor.Trait(); owner.GpsAdd(self); } + + bool wasDisabled; + + public void Tick(Actor self) + { + if (!wasDisabled && self.IsDisabled()) + { + wasDisabled = true; + RemoveGps(self); + } + else if (wasDisabled && !self.IsDisabled()) + { + wasDisabled = false; + owner.GpsAdd(self); + } + } } }