Add IEffectAnnotation interface.
This commit is contained in:
@@ -10,13 +10,14 @@
|
||||
#endregion
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.Effects;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
|
||||
namespace OpenRA.Mods.Common.Effects
|
||||
{
|
||||
class RallyPointIndicator : IEffect, IEffectAboveShroud
|
||||
class RallyPointIndicator : IEffect, IEffectAboveShroud, IEffectAnnotation
|
||||
{
|
||||
readonly Actor building;
|
||||
readonly RallyPoint rp;
|
||||
@@ -92,26 +93,32 @@ namespace OpenRA.Mods.Common.Effects
|
||||
if (!building.World.Selection.Contains(building))
|
||||
return SpriteRenderable.None;
|
||||
|
||||
return RenderInner(wr);
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> RenderInner(WorldRenderer wr)
|
||||
{
|
||||
if (Game.Settings.Game.TargetLines != TargetLinesType.Disabled)
|
||||
yield return new TargetLineRenderable(targetLine, building.Owner.Color, rp.Info.LineWidth);
|
||||
|
||||
var renderables = SpriteRenderable.None;
|
||||
if (circles != null || flag != null)
|
||||
{
|
||||
var palette = wr.Palette(rp.PaletteName);
|
||||
|
||||
if (circles != null)
|
||||
foreach (var r in circles.Render(targetLine[1], palette))
|
||||
yield return r;
|
||||
renderables = renderables.Concat(circles.Render(targetLine[1], palette));
|
||||
|
||||
if (flag != null)
|
||||
foreach (var r in flag.Render(targetLine[1], palette))
|
||||
yield return r;
|
||||
renderables = renderables.Concat(flag.Render(targetLine[1], palette));
|
||||
}
|
||||
|
||||
return renderables;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IEffectAnnotation.RenderAnnotation(WorldRenderer wr)
|
||||
{
|
||||
if (Game.Settings.Game.TargetLines == TargetLinesType.Disabled)
|
||||
return SpriteRenderable.None;
|
||||
|
||||
if (!building.IsInWorld || !building.Owner.IsAlliedWith(building.World.LocalPlayer))
|
||||
return SpriteRenderable.None;
|
||||
|
||||
if (!building.World.Selection.Contains(building))
|
||||
return SpriteRenderable.None;
|
||||
|
||||
return new IRenderable[] { new TargetLineRenderable(targetLine, building.Owner.Color, rp.Info.LineWidth) };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user