Merge pull request #9264 from penev92/appearsOnRadar
Make AppearsOnRadar implement INotifyCreated
This commit is contained in:
@@ -23,21 +23,29 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public object Create(ActorInitializer init) { return new AppearsOnRadar(this); }
|
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<IRadarColorModifier>().FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<Pair<CPos, Color>> RadarSignatureCells(Actor self)
|
public IEnumerable<Pair<CPos, Color>> RadarSignatureCells(Actor self)
|
||||||
{
|
{
|
||||||
var mod = self.TraitsImplementing<IRadarColorModifier>().FirstOrDefault();
|
var color = modifier != null ? modifier.RadarColorOverride(self) : self.Owner.Color.RGB;
|
||||||
var color = mod != null ? mod.RadarColorOverride(self) : self.Owner.Color.RGB;
|
|
||||||
|
|
||||||
if (info.UseLocation)
|
if (info.UseLocation)
|
||||||
return new[] { Pair.New(self.Location, color) };
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user