From 4e11702a999f0bb755d2120f1a05665d9352f03d Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 29 Jul 2011 17:22:40 +1200 Subject: [PATCH] fix #1088; gpsdot should not be given to opponents --- OpenRA.Mods.RA/SupportPowers/GpsPower.cs | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs index e8fe5942fb..03f7797baf 100755 --- a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs @@ -17,17 +17,21 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { - class GpsWatcherInfo : TraitInfo { } + class GpsWatcherInfo : ITraitInfo + { + public object Create (ActorInitializer init) { return new GpsWatcher(init.self.Owner); } + } class GpsWatcher : ISync { - [Sync] - bool Launched = false; + [Sync] bool Launched = false; + [Sync] public bool GrantedAllies = false; + [Sync] public bool Granted = false; + Player owner; + List actors = new List { }; - [Sync] - public bool GrantedAllies = false; - [Sync] - public bool Granted = false; + + public GpsWatcher( Player owner ) { this.owner = owner; } public void GpsRem(Actor atek) { @@ -53,27 +57,23 @@ namespace OpenRA.Mods.RA public void RefreshGps(Actor atek) { - RefreshGranted(atek); + RefreshGranted(); foreach (TraitPair i in atek.World.ActorsWithTrait()) - { - i.Trait.RefreshGranted(atek); - } + i.Trait.RefreshGranted(); if (atek.World.LocalPlayer == null) return; if ((Granted || GrantedAllies) && (atek.World.LocalPlayer.Stances[atek.Owner] == Stance.Ally)) - { atek.World.WorldActor.Trait().ExploreAll(atek.World); - } } - public void RefreshGranted(Actor atek) + void RefreshGranted() { Granted = (actors.Count > 0 && Launched); - GrantedAllies = atek.World.ActorsWithTrait().Any(p => - p.Actor.Owner.Stances[atek.Owner] == Stance.Ally && p.Trait.Granted); + GrantedAllies = owner.World.ActorsWithTrait().Any(p => + p.Actor.Owner.Stances[owner] == Stance.Ally && p.Trait.Granted); } }