Convert ExitsDebugOverlay to IRenderAboveShroudWhenSelected.

This commit is contained in:
Paul Chote
2019-09-02 22:28:30 +01:00
committed by teinarss
parent 60e42c1ea1
commit ccd07b6cfe

View File

@@ -9,6 +9,7 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Graphics; using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics; using OpenRA.Mods.Common.Graphics;
@@ -32,11 +33,10 @@ namespace OpenRA.Mods.Common.Traits
object ITraitInfo.Create(ActorInitializer init) { return new ExitsDebugOverlay(init.Self, this); } object ITraitInfo.Create(ActorInitializer init) { return new ExitsDebugOverlay(init.Self, this); }
} }
public class ExitsDebugOverlay : IRenderAboveWorld public class ExitsDebugOverlay : IRenderAboveShroudWhenSelected
{ {
readonly ExitsDebugOverlayManager manager; readonly ExitsDebugOverlayManager manager;
readonly ExitsDebugOverlayInfo info; readonly ExitsDebugOverlayInfo info;
readonly RgbaColorRenderer rgbaRenderer;
readonly ExitInfo[] exits; readonly ExitInfo[] exits;
CPos[] exitCells; CPos[] exitCells;
@@ -47,14 +47,13 @@ namespace OpenRA.Mods.Common.Traits
{ {
this.info = info; this.info = info;
manager = self.World.WorldActor.TraitOrDefault<ExitsDebugOverlayManager>(); manager = self.World.WorldActor.TraitOrDefault<ExitsDebugOverlayManager>();
rgbaRenderer = Game.Renderer.WorldRgbaColorRenderer;
exits = self.Info.TraitInfos<ExitInfo>().ToArray(); exits = self.Info.TraitInfos<ExitInfo>().ToArray();
} }
void IRenderAboveWorld.RenderAboveWorld(Actor self, WorldRenderer wr) IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
{ {
if (manager == null || !manager.Enabled) if (manager == null || !manager.Enabled)
return; yield break;
exitCells = exits.Select(e => self.Location + e.ExitCell).ToArray(); exitCells = exits.Select(e => self.Location + e.ExitCell).ToArray();
@@ -65,7 +64,7 @@ namespace OpenRA.Mods.Common.Traits
var color = self.Owner.Color; var color = self.Owner.Color;
var vec = exitCell - self.Location; var vec = exitCell - self.Location;
var center = wr.World.Map.CenterOfCell(exitCell); var center = wr.World.Map.CenterOfCell(exitCell);
new TextRenderable(manager.Font, center, 0, color, vec.ToString()).Render(wr); yield return new TextRenderable(manager.Font, center, 0, color, vec.ToString());
} }
} }
@@ -82,7 +81,7 @@ namespace OpenRA.Mods.Common.Traits
var vec = perimCell - self.Location; var vec = perimCell - self.Location;
var center = wr.World.Map.CenterOfCell(perimCell); var center = wr.World.Map.CenterOfCell(perimCell);
new TextRenderable(manager.Font, center, 0, color, vec.ToString()).Render(wr); yield return new TextRenderable(manager.Font, center, 0, color, vec.ToString());
} }
} }
@@ -97,9 +96,11 @@ namespace OpenRA.Mods.Common.Traits
continue; continue;
var exitCellCenter = self.World.Map.CenterOfCell(exitCells[i]); var exitCellCenter = self.World.Map.CenterOfCell(exitCells[i]);
rgbaRenderer.DrawLine(wr.Screen3DPosition(spawnPos), wr.Screen3DPosition(exitCellCenter), 1f, self.Owner.Color); yield return new LineAnnotationRenderable(spawnPos, exitCellCenter, 1, self.Owner.Color);
} }
} }
} }
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return true; } }
} }
} }