diff --git a/OpenRA.Mods.Common/Traits/AppearsOnRadar.cs b/OpenRA.Mods.Common/Traits/AppearsOnRadar.cs index 5697e9dc60..ad2ec15534 100644 --- a/OpenRA.Mods.Common/Traits/AppearsOnRadar.cs +++ b/OpenRA.Mods.Common/Traits/AppearsOnRadar.cs @@ -23,21 +23,29 @@ namespace OpenRA.Mods.Common.Traits public object Create(ActorInitializer init) { return new AppearsOnRadar(this); } } - public class AppearsOnRadar : IRadarSignature + public class AppearsOnRadar : IRadarSignature, INotifyCreated { - AppearsOnRadarInfo info; + readonly AppearsOnRadarInfo info; + IRadarColorModifier modifier; - public AppearsOnRadar(AppearsOnRadarInfo info) { this.info = info; } + public AppearsOnRadar(AppearsOnRadarInfo info) + { + this.info = info; + } + + public void Created(Actor self) + { + modifier = self.TraitsImplementing().FirstOrDefault(); + } public IEnumerable> RadarSignatureCells(Actor self) { - var mod = self.TraitsImplementing().FirstOrDefault(); - var color = mod != null ? mod.RadarColorOverride(self) : self.Owner.Color.RGB; + var color = modifier != null ? modifier.RadarColorOverride(self) : self.Owner.Color.RGB; if (info.UseLocation) return new[] { Pair.New(self.Location, color) }; - else - return self.OccupiesSpace.OccupiedCells().Select(c => Pair.New(c.First, color)); + + return self.OccupiesSpace.OccupiedCells().Select(c => Pair.New(c.First, color)); } } } \ No newline at end of file