From c1aebff8a809d2755fd8b3d5929ccd2d1753a530 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 13 Feb 2011 16:26:06 +1300 Subject: [PATCH] refresh GPS on stance change --- OpenRA.Game/Network/UnitOrders.cs | 2 +- OpenRA.Game/Traits/TraitsInterfaces.cs | 3 ++- OpenRA.Mods.RA/SupportPowers/GpsPower.cs | 19 ++++++++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs index a2cb7e39b2..236c6a19bf 100755 --- a/OpenRA.Game/Network/UnitOrders.cs +++ b/OpenRA.Game/Network/UnitOrders.cs @@ -191,7 +191,7 @@ namespace OpenRA.Network w.WorldActor.Trait().UpdatePlayerStance(w, p, oldStance, s); foreach (var nsc in w.Queries.WithTrait()) - nsc.Trait.StanceChanged(p, target, oldStance, s); + nsc.Trait.StanceChanged(nsc.Actor, p, target, oldStance, s); } } } diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 731c87cc91..7d38494ee0 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -229,5 +229,6 @@ namespace OpenRA.Traits } public interface INotifyKeyPress { bool KeyPressed(Actor self, KeyInput e); } - public interface INotifyStanceChanged { void StanceChanged(Player a, Player b, Stance oldStance, Stance newStance); } + public interface INotifyStanceChanged { void StanceChanged(Actor self, Player a, Player b, + Stance oldStance, Stance newStance); } } diff --git a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs index 6f49873b56..00e21665e9 100755 --- a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs @@ -22,7 +22,7 @@ namespace OpenRA.Mods.RA public override object Create(ActorInitializer init) { return new GpsPower(init.self, this); } } - class GpsPower : SupportPower, INotifyDamage, ISync + class GpsPower : SupportPower, INotifyDamage, ISync, INotifyStanceChanged { public GpsPower(Actor self, GpsPowerInfo info) : base(self, info) { } @@ -58,11 +58,16 @@ namespace OpenRA.Mods.RA } void RefreshGps(Actor self) - { - if (self.World.LocalPlayer != null) - self.World.LocalShroud.Disabled = self.World.Queries.WithTrait() - .Any(p => p.Actor.Owner.Stances[self.World.LocalPlayer] == Stance.Ally && - p.Trait.Granted); - } + { + if (self.World.LocalPlayer != null) + self.World.LocalShroud.Disabled = self.World.Queries.WithTrait() + .Any(p => p.Actor.Owner.Stances[self.World.LocalPlayer] == Stance.Ally && + p.Trait.Granted); + } + + public void StanceChanged(Actor self, Player a, Player b, Stance oldStance, Stance newStance) + { + RefreshGps(self); + } } }