Migrate traits to IRenderAnnotations.
This commit is contained in:
@@ -36,14 +36,14 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
|
||||
foreach (var a in w.ActorsWithTrait<RenderJammerCircle>())
|
||||
if (a.Actor.Owner.IsAlliedWith(w.RenderPlayer))
|
||||
foreach (var r in a.Trait.RenderAboveShroud(a.Actor, wr))
|
||||
foreach (var r in a.Trait.RenderAnnotations(a.Actor, wr))
|
||||
yield return r;
|
||||
}
|
||||
}
|
||||
|
||||
class RenderJammerCircle : IRenderAboveShroudWhenSelected
|
||||
class RenderJammerCircle : IRenderAnnotationsWhenSelected
|
||||
{
|
||||
public IEnumerable<IRenderable> RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
public IEnumerable<IRenderable> RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (!self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||
yield break;
|
||||
@@ -60,6 +60,6 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
}
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
public object Create(ActorInitializer init) { return new RenderShroudCircle(init.Self, this); }
|
||||
}
|
||||
|
||||
class RenderShroudCircle : INotifyCreated, IRenderAboveShroudWhenSelected
|
||||
class RenderShroudCircle : INotifyCreated, IRenderAnnotationsWhenSelected
|
||||
{
|
||||
readonly RenderShroudCircleInfo info;
|
||||
WDist range;
|
||||
@@ -82,11 +82,11 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
info.ContrastColor);
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return RangeCircleRenderables(self, wr);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public override object Create(ActorInitializer init) { return new BaseProvider(init.Self, this); }
|
||||
}
|
||||
|
||||
public class BaseProvider : PausableConditionalTrait<BaseProviderInfo>, ITick, IRenderAboveShroudWhenSelected, ISelectionBar
|
||||
public class BaseProvider : PausableConditionalTrait<BaseProviderInfo>, ITick, IRenderAnnotationsWhenSelected, ISelectionBar
|
||||
{
|
||||
readonly DeveloperMode devMode;
|
||||
readonly Actor self;
|
||||
@@ -89,12 +89,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
Color.FromArgb(96, Color.Black));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return RangeCircleRenderables(wr);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
|
||||
float ISelectionBar.GetValue()
|
||||
{
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public object Create(ActorInitializer init) { return new CombatDebugOverlay(init.Self); }
|
||||
}
|
||||
|
||||
public class CombatDebugOverlay : IRenderAboveShroud, INotifyDamage, INotifyCreated
|
||||
public class CombatDebugOverlay : IRenderAnnotations, INotifyDamage, INotifyCreated
|
||||
{
|
||||
static readonly WVec TargetPosHLine = new WVec(0, 128, 0);
|
||||
static readonly WVec TargetPosVLine = new WVec(128, 0, 0);
|
||||
@@ -52,14 +52,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
allBlockers = self.TraitsImplementing<IBlocksProjectiles>().ToArray();
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (debugVis == null || !debugVis.CombatGeometry || self.World.FogObscures(self))
|
||||
yield break;
|
||||
|
||||
var wcr = Game.Renderer.WorldRgbaColorRenderer;
|
||||
var iz = 1 / wr.Viewport.Zoom;
|
||||
|
||||
var blockers = allBlockers.Where(Exts.IsTraitEnabled).ToList();
|
||||
if (blockers.Count > 0)
|
||||
{
|
||||
@@ -80,13 +77,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
|
||||
foreach (var attack in self.TraitsImplementing<AttackBase>().Where(x => !x.IsTraitDisabled))
|
||||
foreach (var r in RenderArmaments(self, attack, wr, wcr, iz))
|
||||
foreach (var r in RenderArmaments(self, attack))
|
||||
yield return r;
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return true; } }
|
||||
|
||||
IEnumerable<IRenderable> RenderArmaments(Actor self, AttackBase attack, WorldRenderer wr, RgbaColorRenderer wcr, float iz)
|
||||
IEnumerable<IRenderable> RenderArmaments(Actor self, AttackBase attack)
|
||||
{
|
||||
// Fire ports on garrisonable structures
|
||||
var garrison = attack as AttackGarrisoned;
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
object ITraitInfo.Create(ActorInitializer init) { return new ExitsDebugOverlay(init.Self, this); }
|
||||
}
|
||||
|
||||
public class ExitsDebugOverlay : IRenderAboveShroudWhenSelected
|
||||
public class ExitsDebugOverlay : IRenderAnnotationsWhenSelected
|
||||
{
|
||||
readonly ExitsDebugOverlayManager manager;
|
||||
readonly ExitsDebugOverlayInfo info;
|
||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
exits = self.Info.TraitInfos<ExitInfo>().ToArray();
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (manager == null || !manager.Enabled)
|
||||
yield break;
|
||||
@@ -101,6 +101,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public object Create(ActorInitializer init) { return new CustomTerrainDebugOverlay(init.Self, this); }
|
||||
}
|
||||
|
||||
class CustomTerrainDebugOverlay : IWorldLoaded, IChatCommand, IRenderAboveShroud
|
||||
class CustomTerrainDebugOverlay : IWorldLoaded, IChatCommand, IRenderAnnotations
|
||||
{
|
||||
const string CommandName = "debugcustomterrain";
|
||||
const string CommandDesc = "toggles the custom terrain debug overlay.";
|
||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
Enabled ^= true;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (!Enabled)
|
||||
yield break;
|
||||
@@ -78,6 +78,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public virtual object Create(ActorInitializer init) { return new DrawLineToTarget(init.Self, this); }
|
||||
}
|
||||
|
||||
public class DrawLineToTarget : IRenderAboveShroudWhenSelected, INotifySelected
|
||||
public class DrawLineToTarget : IRenderAboveShroud, IRenderAnnotationsWhenSelected, INotifySelected
|
||||
{
|
||||
readonly DrawLineToTargetInfo info;
|
||||
readonly List<IRenderable> renderableCache = new List<IRenderable>();
|
||||
@@ -63,7 +63,29 @@ namespace OpenRA.Mods.Common.Traits
|
||||
ShowTargetLines(self);
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (!self.Owner.IsAlliedWith(self.World.LocalPlayer) || Game.Settings.Game.TargetLines == TargetLinesType.Disabled)
|
||||
yield break;
|
||||
|
||||
// Players want to see the lines when in waypoint mode.
|
||||
var force = Game.GetModifierKeys().HasModifier(Modifiers.Shift) || self.World.OrderGenerator is ForceModifiersOrderGenerator;
|
||||
|
||||
if (--lifetime <= 0 && !force)
|
||||
yield break;
|
||||
|
||||
var pal = wr.Palette(TileSet.TerrainPaletteInternalName);
|
||||
var a = self.CurrentActivity;
|
||||
for (; a != null; a = a.NextActivity)
|
||||
if (!a.IsCanceling)
|
||||
foreach (var n in a.TargetLineNodes(self))
|
||||
if (n.Tile != null && n.Target.Type != TargetType.Invalid)
|
||||
yield return new SpriteRenderable(n.Tile, n.Target.CenterPosition, WVec.Zero, -511, pal, 1f, true);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return false; } }
|
||||
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (!self.Owner.IsAlliedWith(self.World.LocalPlayer) || Game.Settings.Game.TargetLines == TargetLinesType.Disabled)
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
@@ -84,20 +106,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
foreach (var n in a.TargetLineNodes(self))
|
||||
{
|
||||
if (n.Target.Type != TargetType.Invalid)
|
||||
if (n.Target.Type != TargetType.Invalid && n.Tile == null)
|
||||
{
|
||||
var lineWidth = renderableCache.Any() ? info.QueuedLineWidth : info.LineWidth;
|
||||
var markerWidth = renderableCache.Any() ? info.QueuedMarkerWidth : info.MarkerWidth;
|
||||
|
||||
var pal = wr.Palette(TileSet.TerrainPaletteInternalName);
|
||||
var tile = n.Tile;
|
||||
var pos = n.Target.CenterPosition;
|
||||
|
||||
if (tile == null)
|
||||
renderableCache.Add(new TargetLineRenderable(new[] { prev, pos }, n.Color, lineWidth, markerWidth));
|
||||
else
|
||||
renderableCache.Add(new SpriteRenderable(tile, pos, WVec.Zero, -511, pal, 1f, true));
|
||||
|
||||
renderableCache.Add(new TargetLineRenderable(new[] { prev, pos }, n.Color, lineWidth, markerWidth));
|
||||
prev = pos;
|
||||
}
|
||||
}
|
||||
@@ -108,7 +123,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return renderableCache;
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
|
||||
public static class LineTargetExts
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public object Create(ActorInitializer init) { return new RenderDebugState(init.Self, this); }
|
||||
}
|
||||
|
||||
class RenderDebugState : INotifyAddedToWorld, INotifyOwnerChanged, INotifyCreated, IRenderAboveShroudWhenSelected
|
||||
class RenderDebugState : INotifyAddedToWorld, INotifyOwnerChanged, INotifyCreated, IRenderAnnotationsWhenSelected
|
||||
{
|
||||
readonly DebugVisualizations debugVis;
|
||||
readonly SpriteFont font;
|
||||
@@ -70,7 +70,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
return self.EffectiveOwner != null && self.EffectiveOwner.Disguised ? self.EffectiveOwner.Owner.Color : self.Owner.Color;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (debugVis == null || !debugVis.ActorTags)
|
||||
yield break;
|
||||
@@ -98,6 +98,6 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
yield return new TextRenderable(font, self.CenterPosition + offset, 0, color, aiSquadInfo);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public object Create(ActorInitializer init) { return new RenderDetectionCircle(init.Self, this); }
|
||||
}
|
||||
|
||||
class RenderDetectionCircle : ITick, IRenderAboveShroudWhenSelected
|
||||
class RenderDetectionCircle : ITick, IRenderAnnotationsWhenSelected
|
||||
{
|
||||
readonly RenderDetectionCircleInfo info;
|
||||
WAngle lineAngle;
|
||||
@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (!self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||
yield break;
|
||||
@@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
info.ContrastColor);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
|
||||
void ITick.Tick(Actor self)
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public object Create(ActorInitializer init) { return new RenderNameTag(init.Self, this); }
|
||||
}
|
||||
|
||||
class RenderNameTag : IRender
|
||||
class RenderNameTag : IRenderAnnotations
|
||||
{
|
||||
readonly SpriteFont font;
|
||||
readonly Color color;
|
||||
@@ -48,19 +48,18 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
decorationBounds = self.TraitsImplementing<IDecorationBounds>().ToArray();
|
||||
}
|
||||
|
||||
public IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (self.World.FogObscures(self))
|
||||
yield break;
|
||||
|
||||
var bounds = decorationBounds.FirstNonEmptyBounds(self, wr);
|
||||
var spaceBuffer = (int)(10 / wr.Viewport.Zoom);
|
||||
var effectPos = wr.ProjectedPosition(new int2((bounds.Left + bounds.Right) / 2, bounds.Y - spaceBuffer));
|
||||
|
||||
return new IRenderable[] { new TextRenderable(font, effectPos, 0, color, name) };
|
||||
yield return new TextRenderable(font, effectPos, 0, color, name);
|
||||
}
|
||||
|
||||
IEnumerable<Rectangle> IRender.ScreenBounds(Actor self, WorldRenderer wr)
|
||||
{
|
||||
// Name tags don't contribute to actor bounds
|
||||
yield break;
|
||||
}
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
}
|
||||
}
|
||||
|
||||
class RenderRangeCircle : IRenderAboveShroudWhenSelected
|
||||
class RenderRangeCircle : IRenderAnnotationsWhenSelected
|
||||
{
|
||||
public readonly RenderRangeCircleInfo Info;
|
||||
readonly Actor self;
|
||||
@@ -108,11 +108,11 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
Info.BorderColor);
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return RangeCircleRenderables(wr);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public object Create(ActorInitializer init) { return new SelectionDecorations(init.Self, this); }
|
||||
}
|
||||
|
||||
public class SelectionDecorations : ISelectionDecorations, IRenderAboveShroud, INotifyCreated, ITick
|
||||
public class SelectionDecorations : ISelectionDecorations, IRenderAnnotations, INotifyCreated, ITick
|
||||
{
|
||||
// depends on the order of pips in TraitsInterfaces.cs!
|
||||
static readonly string[] PipStrings = { "pip-empty", "pip-green", "pip-yellow", "pip-red", "pip-gray", "pip-blue", "pip-ammo", "pip-ammoempty" };
|
||||
@@ -75,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (self.World.FogObscures(self))
|
||||
return Enumerable.Empty<IRenderable>();
|
||||
@@ -83,7 +83,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
return DrawDecorations(self, wr);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return true; } }
|
||||
|
||||
IEnumerable<IRenderable> DrawDecorations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public override object Create(ActorInitializer init) { return new WithDecoration(init.Self, this); }
|
||||
}
|
||||
|
||||
public class WithDecoration : ConditionalTrait<WithDecorationInfo>, ITick, IRenderAboveShroud, IRenderAboveShroudWhenSelected
|
||||
public class WithDecoration : ConditionalTrait<WithDecorationInfo>, ITick, IRenderAnnotations, IRenderAnnotationsWhenSelected
|
||||
{
|
||||
protected Animation anim;
|
||||
readonly IDecorationBounds[] decorationBounds;
|
||||
@@ -124,18 +124,18 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
return wr.Palette(Info.Palette + (Info.IsPlayerPalette ? self.Owner.InternalName : ""));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return !Info.RequiresSelection ? RenderInner(self, wr) : SpriteRenderable.None;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return Info.RequiresSelection ? RenderInner(self, wr) : SpriteRenderable.None;
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
|
||||
IEnumerable<IRenderable> RenderInner(Actor self, WorldRenderer wr)
|
||||
{
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public override object Create(ActorInitializer init) { return new WithRangeCircle(init.Self, this); }
|
||||
}
|
||||
|
||||
class WithRangeCircle : ConditionalTrait<WithRangeCircleInfo>, IRenderAboveShroudWhenSelected, IRenderAboveShroud
|
||||
class WithRangeCircle : ConditionalTrait<WithRangeCircleInfo>, IRenderAnnotationsWhenSelected, IRenderAboveShroud
|
||||
{
|
||||
readonly Actor self;
|
||||
|
||||
@@ -95,12 +95,12 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
Color.FromArgb(96, Color.Black));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return RenderRangeCircle(self, wr, RangeCircleVisibility.WhenSelected);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return false; } }
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
{
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public object Create(ActorInitializer init) { return new WithSpriteControlGroupDecoration(init.Self, this); }
|
||||
}
|
||||
|
||||
public class WithSpriteControlGroupDecoration : IRenderAboveShroudWhenSelected
|
||||
public class WithSpriteControlGroupDecoration : IRenderAnnotationsWhenSelected
|
||||
{
|
||||
public readonly WithSpriteControlGroupDecorationInfo Info;
|
||||
readonly IDecorationBounds[] decorationBounds;
|
||||
@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
pipImages = new Animation(self.World, Info.Image);
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (self.Owner != wr.World.LocalPlayer)
|
||||
yield break;
|
||||
@@ -62,7 +62,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
yield return r;
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
|
||||
IEnumerable<IRenderable> DrawControlGroup(Actor self, WorldRenderer wr, PaletteReference palette)
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
public object Create(ActorInitializer init) { return new WithTextControlGroupDecoration(init.Self, this); }
|
||||
}
|
||||
|
||||
public class WithTextControlGroupDecoration : IRenderAboveShroudWhenSelected, INotifyOwnerChanged
|
||||
public class WithTextControlGroupDecoration : IRenderAnnotationsWhenSelected, INotifyOwnerChanged
|
||||
{
|
||||
readonly WithTextControlGroupDecorationInfo info;
|
||||
readonly IDecorationBounds[] decorationBounds;
|
||||
@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
color = info.UsePlayerColor ? self.Owner.Color : info.Color;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (self.Owner != wr.World.LocalPlayer)
|
||||
yield break;
|
||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
yield return r;
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
|
||||
IEnumerable<IRenderable> DrawControlGroup(Actor self, WorldRenderer wr)
|
||||
{
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
}
|
||||
}
|
||||
|
||||
public class WithTextDecoration : ConditionalTrait<WithTextDecorationInfo>, IRender, IRenderAboveShroudWhenSelected, INotifyOwnerChanged
|
||||
public class WithTextDecoration : ConditionalTrait<WithTextDecorationInfo>, IRender, IRenderAnnotationsWhenSelected, INotifyOwnerChanged
|
||||
{
|
||||
readonly SpriteFont font;
|
||||
readonly IDecorationBounds[] decorationBounds;
|
||||
@@ -84,12 +84,12 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
yield break;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
return Info.RequiresSelection ? RenderInner(self, wr) : SpriteRenderable.None;
|
||||
}
|
||||
|
||||
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
bool IRenderAnnotationsWhenSelected.SpatiallyPartitionable { get { return true; } }
|
||||
|
||||
IEnumerable<IRenderable> RenderInner(Actor self, WorldRenderer wr)
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("Renders a debug overlay showing the terrain cells. Attach this to the world actor.")]
|
||||
public class TerrainGeometryOverlayInfo : TraitInfo<TerrainGeometryOverlay> { }
|
||||
|
||||
public class TerrainGeometryOverlay : IRenderAboveShroud, IWorldLoaded, IChatCommand
|
||||
public class TerrainGeometryOverlay : IRenderAnnotations, IWorldLoaded, IChatCommand
|
||||
{
|
||||
const string CommandName = "terrainoverlay";
|
||||
const string CommandDesc = "toggles the terrain geometry overlay.";
|
||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
Enabled ^= true;
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
if (!Enabled)
|
||||
yield break;
|
||||
@@ -98,6 +98,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public object Create(ActorInitializer init) { return new WarheadDebugOverlay(this); }
|
||||
}
|
||||
|
||||
public class WarheadDebugOverlay : IRenderAboveShroud
|
||||
public class WarheadDebugOverlay : IRenderAnnotations
|
||||
{
|
||||
class WHImpact
|
||||
{
|
||||
@@ -61,7 +61,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
impacts.Add(new WHImpact(pos, range, info.DisplayDuration, color));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr)
|
||||
IEnumerable<IRenderable> IRenderAnnotations.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||
{
|
||||
foreach (var i in impacts)
|
||||
{
|
||||
@@ -83,6 +83,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
impacts.RemoveAll(i => i.Time == 0);
|
||||
}
|
||||
|
||||
bool IRenderAboveShroud.SpatiallyPartitionable { get { return false; } }
|
||||
bool IRenderAnnotations.SpatiallyPartitionable { get { return false; } }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user