remove self parameter from IPostRenderSelection.RenderAfterWorld

This commit is contained in:
Chris Forbes
2011-10-23 12:23:15 +13:00
parent b9ac25e044
commit ce8267992a
6 changed files with 30 additions and 12 deletions

View File

@@ -102,7 +102,7 @@ namespace OpenRA.Graphics
foreach (var a in world.Selection.Actors)
if (!a.Destroyed)
foreach (var t in a.TraitsImplementing<IPostRenderSelection>())
t.RenderAfterWorld(this, a);
t.RenderAfterWorld(this);
Game.Renderer.Flush();
}

View File

@@ -18,17 +18,18 @@ namespace OpenRA.Traits
{
public readonly int Ticks = 60;
public virtual object Create(ActorInitializer init) { return new DrawLineToTarget(this); }
public virtual object Create(ActorInitializer init) { return new DrawLineToTarget(init.self, this); }
}
public class DrawLineToTarget : IPostRenderSelection
{
Actor self;
DrawLineToTargetInfo Info;
Target target;
Color c;
int lifetime;
public DrawLineToTarget(DrawLineToTargetInfo info) { this.Info = info; }
public DrawLineToTarget(Actor self, DrawLineToTargetInfo info) { this.self = self; this.Info = info; }
public void SetTarget(Actor self, Target target, Color c, bool display)
{
@@ -39,7 +40,7 @@ namespace OpenRA.Traits
lifetime = Info.Ticks;
}
public void RenderAfterWorld(WorldRenderer wr, Actor self)
public void RenderAfterWorld(WorldRenderer wr)
{
if (self.IsIdle) return;

View File

@@ -14,22 +14,27 @@ using OpenRA.Graphics;
namespace OpenRA.Traits
{
public class SelectableInfo : TraitInfo<Selectable>
public class SelectableInfo : ITraitInfo
{
public readonly int Priority = 10;
public readonly int[] Bounds = null;
[VoiceReference] public readonly string Voice = null;
public object Create(ActorInitializer init) { return new Selectable(init.self); }
}
public class Selectable : IPostRenderSelection
{
public void RenderAfterWorld (WorldRenderer wr, Actor self)
Actor self;
public Selectable(Actor self) { this.self = self; }
public void RenderAfterWorld(WorldRenderer wr)
{
var bounds = self.Bounds.Value;
var xy = new float2(bounds.Left, bounds.Top);
var Xy = new float2(bounds.Right, bounds.Top);
var xY = new float2(bounds.Left, bounds.Bottom);
wr.DrawSelectionBox(self, Color.White);
DrawHealthBar(self, xy, Xy);

View File

@@ -14,7 +14,10 @@ using OpenRA.Graphics;
namespace OpenRA.Traits
{
public class SelectionDecorationsInfo : TraitInfo<SelectionDecorations> {}
public class SelectionDecorationsInfo : ITraitInfo
{
public object Create(ActorInitializer init) { return new SelectionDecorations(init.self); }
}
public class SelectionDecorations : IPostRenderSelection
{
@@ -22,7 +25,11 @@ namespace OpenRA.Traits
static readonly string[] pipStrings = { "pip-empty", "pip-green", "pip-yellow", "pip-red", "pip-gray", "pip-blue" };
static readonly string[] tagStrings = { "", "tag-fake", "tag-primary" };
public void RenderAfterWorld (WorldRenderer wr, Actor self)
Actor self;
public SelectionDecorations(Actor self) { this.self = self; }
public void RenderAfterWorld(WorldRenderer wr)
{
var bounds = self.Bounds.Value;

View File

@@ -203,7 +203,7 @@ namespace OpenRA.Traits
public interface IPostRender { void RenderAfterWorld(WorldRenderer wr, Actor self); }
public interface IPostRenderSelection { void RenderAfterWorld(WorldRenderer wr, Actor self); }
public interface IPostRenderSelection { void RenderAfterWorld(WorldRenderer wr); }
public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); }
public interface IRenderAsTerrain { IEnumerable<Renderable> RenderAsTerrain(Actor self); }

View File

@@ -18,12 +18,14 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
class MinelayerInfo : TraitInfo<Minelayer>
class MinelayerInfo : ITraitInfo
{
[ActorReference] public readonly string Mine = "minv";
[ActorReference] public readonly string[] RearmBuildings = { "fix" };
public readonly float MinefieldDepth = 1.5f;
public object Create(ActorInitializer init) { return new Minelayer(init.self); }
}
class Minelayer : IIssueOrder, IResolveOrder, IPostRenderSelection, ISync
@@ -31,6 +33,9 @@ namespace OpenRA.Mods.RA
/* [Sync] when sync can cope with arrays! */
public int2[] minefield = null;
[Sync] int2 minefieldStart;
Actor self;
public Minelayer(Actor self) { this.self = self; }
public IEnumerable<IOrderTargeter> Orders
{
@@ -138,7 +143,7 @@ namespace OpenRA.Mods.RA
public string GetCursor(World world, int2 xy, MouseInput mi) { lastMousePos = xy; return "ability"; } /* todo */
}
public void RenderAfterWorld(WorldRenderer wr, Actor self)
public void RenderAfterWorld(WorldRenderer wr)
{
if (self.Owner != self.World.LocalPlayer)
return;