Render disabled targetable positions in gray

Instead of not rendering them at all.
Also moved their debug overlay to HitShape.
This commit is contained in:
reaperrr
2021-06-25 14:56:32 +02:00
committed by Paul Chote
parent feba9f2b9f
commit 9371cecc00
2 changed files with 17 additions and 9 deletions

View File

@@ -28,9 +28,6 @@ namespace OpenRA.Mods.Common.Traits
public class CombatDebugOverlay : IRenderAnnotations, INotifyDamage, INotifyCreated
{
static readonly WVec TargetPosHLine = new WVec(0, 128, 0);
static readonly WVec TargetPosVLine = new WVec(128, 0, 0);
readonly DebugVisualizations debugVis;
readonly IHealthInfo healthInfo;
readonly Lazy<BodyOrientation> coords;
@@ -70,14 +67,12 @@ namespace OpenRA.Mods.Common.Traits
}
foreach (var s in shapes)
{
foreach (var a in s.RenderDebugAnnotations(self, wr))
yield return a;
foreach (var r in s.RenderDebugOverlay(self, wr))
yield return r;
var positions = Target.FromActor(self).Positions;
foreach (var p in positions)
{
yield return new LineAnnotationRenderable(p - TargetPosHLine, p + TargetPosHLine, 1, Color.Lime);
yield return new LineAnnotationRenderable(p - TargetPosVLine, p + TargetPosVLine, 1, Color.Lime);
}
foreach (var attack in self.TraitsImplementing<AttackBase>().Where(x => !x.IsTraitDisabled))

View File

@@ -12,6 +12,7 @@
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics;
using OpenRA.Mods.Common.HitShapes;
using OpenRA.Primitives;
using OpenRA.Traits;
@@ -131,6 +132,18 @@ namespace OpenRA.Mods.Common.Traits
return Info.Type.DistanceFromEdge(pos, origin, orientation);
}
public IEnumerable<IRenderable> RenderDebugAnnotations(Actor self, WorldRenderer wr)
{
var targetPosHLine = new WVec(0, 128, 0);
var targetPosVLine = new WVec(128, 0, 0);
var targetPosColor = IsTraitDisabled ? Color.Gainsboro : Color.Lime;
foreach (var p in TargetablePositions(self))
{
yield return new LineAnnotationRenderable(p - targetPosHLine, p + targetPosHLine, 1, targetPosColor);
yield return new LineAnnotationRenderable(p - targetPosVLine, p + targetPosVLine, 1, targetPosColor);
}
}
public IEnumerable<IRenderable> RenderDebugOverlay(Actor self, WorldRenderer wr)
{
var origin = turret != null ? self.CenterPosition + turret.Position(self) : self.CenterPosition;