Reverse target line draw order.

This commit is contained in:
Paul Chote
2019-08-05 00:25:16 +01:00
committed by abcdefg30
parent b0a7865cfa
commit 1543ccb749

View File

@@ -10,9 +10,8 @@
#endregion #endregion
using System.Collections.Generic; using System.Collections.Generic;
using OpenRA.Activities; using System.Linq;
using OpenRA.Graphics; using OpenRA.Graphics;
using OpenRA.Primitives;
using OpenRA.Traits; using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
@@ -35,6 +34,7 @@ namespace OpenRA.Mods.Common.Traits
public class DrawLineToTarget : IRenderAboveShroudWhenSelected, INotifySelected public class DrawLineToTarget : IRenderAboveShroudWhenSelected, INotifySelected
{ {
readonly DrawLineToTargetInfo info; readonly DrawLineToTargetInfo info;
readonly List<IRenderable> renderableCache = new List<IRenderable>();
int lifetime; int lifetime;
public DrawLineToTarget(Actor self, DrawLineToTargetInfo info) public DrawLineToTarget(Actor self, DrawLineToTargetInfo info)
@@ -61,17 +61,18 @@ namespace OpenRA.Mods.Common.Traits
IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr) IEnumerable<IRenderable> IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)
{ {
if (!self.Owner.IsAlliedWith(self.World.LocalPlayer)) if (!self.Owner.IsAlliedWith(self.World.LocalPlayer))
yield break; return Enumerable.Empty<IRenderable>();
// Players want to see the lines when in waypoint mode. // Players want to see the lines when in waypoint mode.
var force = Game.GetModifierKeys().HasModifier(Modifiers.Shift); var force = Game.GetModifierKeys().HasModifier(Modifiers.Shift);
if (--lifetime <= 0 && !force) if (--lifetime <= 0 && !force)
yield break; return Enumerable.Empty<IRenderable>();
if (!(force || Game.Settings.Game.DrawTargetLine)) if (!(force || Game.Settings.Game.DrawTargetLine))
yield break; return Enumerable.Empty<IRenderable>();
renderableCache.Clear();
var prev = self.CenterPosition; var prev = self.CenterPosition;
var a = self.CurrentActivity; var a = self.CurrentActivity;
for (; a != null; a = a.NextActivity) for (; a != null; a = a.NextActivity)
@@ -88,14 +89,18 @@ namespace OpenRA.Mods.Common.Traits
var pos = n.Target.CenterPosition; var pos = n.Target.CenterPosition;
if (tile == null) if (tile == null)
yield return new TargetLineRenderable(new[] { prev, pos }, n.Color, info.LineWidth, info.MarkerWidth); renderableCache.Add(new TargetLineRenderable(new[] { prev, pos }, n.Color, info.LineWidth, info.MarkerWidth));
else else
yield return new SpriteRenderable(tile, pos, WVec.Zero, -511, pal, 1f, true); renderableCache.Add(new SpriteRenderable(tile, pos, WVec.Zero, -511, pal, 1f, true));
prev = pos; prev = pos;
} }
} }
} }
// Reverse draw order so target markers are drawn on top of the next line
renderableCache.Reverse();
return renderableCache;
} }
bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } } bool IRenderAboveShroudWhenSelected.SpatiallyPartitionable { get { return false; } }