format and clean up DrawLineToTarget

This commit is contained in:
Chris Forbes
2010-08-01 11:32:09 +12:00
parent e8604d172c
commit 13244d17f1

View File

@@ -9,64 +9,62 @@
#endregion #endregion
using System.Drawing; using System.Drawing;
using OpenRA.Traits.Activities; using OpenRA.Traits.Activities;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class DrawLineToTargetInfo : ITraitInfo public class DrawLineToTargetInfo : ITraitInfo
{ {
public readonly int Ticks = 60; public readonly int Ticks = 60;
public virtual object Create(ActorInitializer init) { return new DrawLineToTarget(this); } public virtual object Create(ActorInitializer init) { return new DrawLineToTarget(this); }
} }
public class DrawLineToTarget :IPostRenderSelection public class DrawLineToTarget : IPostRenderSelection
{ {
DrawLineToTargetInfo Info; DrawLineToTargetInfo Info;
public DrawLineToTarget(DrawLineToTargetInfo info) public DrawLineToTarget(DrawLineToTargetInfo info)
{ {
this.Info = info; this.Info = info;
} }
Target target; Target target;
int lifetime; int lifetime;
Color c; Color c;
public void SetTarget(Actor self, Target target, Color c) public void SetTarget(Actor self, Target target, Color c)
{ {
this.target = target; this.target = target;
lifetime = Info.Ticks; lifetime = Info.Ticks;
this.c = c; this.c = c;
} }
public void SetTargetSilently(Actor self, Target target, Color c) public void SetTargetSilently(Actor self, Target target, Color c)
{ {
this.target = target; this.target = target;
this.c = c; this.c = c;
} }
public void RenderAfterWorld (Actor self) public void RenderAfterWorld(Actor self)
{ {
var activity = self.GetCurrentActivity(); if (self.IsIdle) return;
if (activity == null || activity is Idle)
return; var force = Game.GetModifierKeys().HasModifier(Modifiers.Alt);
if ((lifetime <= 0 || --lifetime <= 0) && !force)
var force = Game.GetModifierKeys().HasModifier(Modifiers.Alt); return;
if ((lifetime <= 0 || --lifetime <= 0) && !force)
return; var p = target.CenterLocation;
var p = target.CenterLocation; Game.Renderer.LineRenderer.DrawLine(self.CenterLocation, p, c, c);
for (bool b = false; !b; p = self.CenterLocation, b = true)
Game.Renderer.LineRenderer.DrawLine(self.CenterLocation, p, c, c); {
for (bool b = false; !b; p = self.CenterLocation, b = true) Game.Renderer.LineRenderer.DrawLine(p + new float2(-1, -1), p + new float2(-1, 1), c, c);
{ Game.Renderer.LineRenderer.DrawLine(p + new float2(-1, 1), p + new float2(1, 1), c, c);
Game.Renderer.LineRenderer.DrawLine(p + new float2(-1, -1), p + new float2(-1, 1), c, c); Game.Renderer.LineRenderer.DrawLine(p + new float2(1, 1), p + new float2(1, -1), c, c);
Game.Renderer.LineRenderer.DrawLine(p + new float2(-1, 1), p + new float2(1, 1), c, c); Game.Renderer.LineRenderer.DrawLine(p + new float2(1, -1), p + new float2(-1, -1), c, c);
Game.Renderer.LineRenderer.DrawLine(p + new float2(1, 1), p + new float2(1, -1), c, c); }
Game.Renderer.LineRenderer.DrawLine(p + new float2(1, -1), p + new float2(-1, -1), c, c); Game.Renderer.LineRenderer.Flush();
} }
Game.Renderer.LineRenderer.Flush(); }
}
}
} }