Add annotation support to IOrderGenerator.

This commit is contained in:
Paul Chote
2019-09-01 19:29:53 +01:00
committed by abcdefg30
parent 1dc84f48de
commit 7d1ce0c83b
15 changed files with 33 additions and 8 deletions

View File

@@ -166,8 +166,13 @@ namespace OpenRA.Graphics
.Where(t => !t.SpatiallyPartitionable || onScreenActors.Contains(a)) .Where(t => !t.SpatiallyPartitionable || onScreenActors.Contains(a))
.SelectMany(t => t.RenderAnnotations(a, this))); .SelectMany(t => t.RenderAnnotations(a, this)));
var orderGenerator = SpriteRenderable.None;
if (World.OrderGenerator != null)
orderGenerator = World.OrderGenerator.RenderAnnotations(this, World);
return actors return actors
.Concat(selected) .Concat(selected)
.Concat(orderGenerator)
.Select(r => r.PrepareRender(this)); .Select(r => r.PrepareRender(this));
} }

View File

@@ -20,6 +20,7 @@ namespace OpenRA
void Tick(World world); void Tick(World world);
IEnumerable<IRenderable> Render(WorldRenderer wr, World world); IEnumerable<IRenderable> Render(WorldRenderer wr, World world);
IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world); IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world);
IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world);
string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi); string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi);
void Deactivate(); void Deactivate();
bool HandleKeyPress(KeyInput e); bool HandleKeyPress(KeyInput e);

View File

@@ -64,6 +64,7 @@ namespace OpenRA.Orders
public virtual void Tick(World world) { } public virtual void Tick(World world) { }
public virtual IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } public virtual IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
public virtual IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } public virtual IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
public virtual IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
public virtual string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) public virtual string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {

View File

@@ -222,6 +222,8 @@ namespace OpenRA.Mods.Cnc.Traits
} }
} }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
return "ability"; return "ability";

View File

@@ -215,12 +215,11 @@ namespace OpenRA.Mods.Cnc.Traits
world.CancelInputMode(); world.CancelInputMode();
} }
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
{
yield break;
}
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world)
{ {
if (!self.IsInWorld || self.Owner != self.World.LocalPlayer) if (!self.IsInWorld || self.Owner != self.World.LocalPlayer)
yield break; yield break;

View File

@@ -113,8 +113,9 @@ namespace OpenRA.Mods.Cnc.Traits
} }
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world)
{ {
foreach (var a in instance.Instances.Where(i => !i.IsTraitPaused)) foreach (var a in instance.Instances.Where(i => !i.IsTraitPaused))
{ {

View File

@@ -167,7 +167,9 @@ namespace OpenRA.Mods.Cnc.Traits
world.CancelInputMode(); world.CancelInputMode();
} }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world)
{ {
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
var targetUnits = power.UnitsInRange(xy).Where(a => !world.FogObscures(a)); var targetUnits = power.UnitsInRange(xy).Where(a => !world.FogObscures(a));
@@ -291,7 +293,10 @@ namespace OpenRA.Mods.Cnc.Traits
foreach (var r in unit.Render(wr)) foreach (var r in unit.Render(wr))
yield return r.OffsetBy(offset); yield return r.OffsetBy(offset);
} }
}
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world)
{
foreach (var unit in power.UnitsInRange(sourceLocation)) foreach (var unit in power.UnitsInRange(sourceLocation))
{ {
if (unit.CanBeViewedByPlayer(manager.Self.Owner)) if (unit.CanBeViewedByPlayer(manager.Self.Owner))

View File

@@ -28,6 +28,7 @@ namespace OpenRA.Mods.Common.Orders
protected override void Tick(World world) { } protected override void Tick(World world) { }
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
return "ability"; return "ability";

View File

@@ -63,6 +63,7 @@ namespace OpenRA.Mods.Common.Orders
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
protected abstract override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi); protected abstract override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi);
} }

View File

@@ -28,6 +28,7 @@ namespace OpenRA.Mods.Common.Orders
void IOrderGenerator.Tick(World world) { Tick(world); } void IOrderGenerator.Tick(World world) { Tick(world); }
IEnumerable<IRenderable> IOrderGenerator.Render(WorldRenderer wr, World world) { return Render(wr, world); } IEnumerable<IRenderable> IOrderGenerator.Render(WorldRenderer wr, World world) { return Render(wr, world); }
IEnumerable<IRenderable> IOrderGenerator.RenderAboveShroud(WorldRenderer wr, World world) { return RenderAboveShroud(wr, world); } IEnumerable<IRenderable> IOrderGenerator.RenderAboveShroud(WorldRenderer wr, World world) { return RenderAboveShroud(wr, world); }
IEnumerable<IRenderable> IOrderGenerator.RenderAnnotations(WorldRenderer wr, World world) { return RenderAnnotations(wr, world); }
string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) { return GetCursor(world, cell, worldPixel, mi); } string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) { return GetCursor(world, cell, worldPixel, mi); }
void IOrderGenerator.Deactivate() { } void IOrderGenerator.Deactivate() { }
bool IOrderGenerator.HandleKeyPress(KeyInput e) { return false; } bool IOrderGenerator.HandleKeyPress(KeyInput e) { return false; }
@@ -35,6 +36,7 @@ namespace OpenRA.Mods.Common.Orders
protected abstract void Tick(World world); protected abstract void Tick(World world);
protected abstract IEnumerable<IRenderable> Render(WorldRenderer wr, World world); protected abstract IEnumerable<IRenderable> Render(WorldRenderer wr, World world);
protected abstract IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world); protected abstract IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world);
protected abstract IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world);
protected abstract string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi); protected abstract string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi);
protected abstract IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi); protected abstract IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi);
} }

View File

@@ -281,6 +281,8 @@ namespace OpenRA.Mods.Common.Orders
return preview != null ? preview.Render(wr, topLeft, footprint) : Enumerable.Empty<IRenderable>(); return preview != null ? preview.Render(wr, topLeft, footprint) : Enumerable.Empty<IRenderable>();
} }
IEnumerable<IRenderable> IOrderGenerator.RenderAnnotations(WorldRenderer wr, World world) { yield break; }
string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) { return "default"; } string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) { return "default"; }
bool IOrderGenerator.HandleKeyPress(KeyInput e) bool IOrderGenerator.HandleKeyPress(KeyInput e)

View File

@@ -85,6 +85,7 @@ namespace OpenRA.Mods.Common.Orders
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {

View File

@@ -138,7 +138,9 @@ namespace OpenRA.Mods.Common.Traits
world.CancelInputMode(); world.CancelInputMode();
} }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world)
{ {
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos); var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
foreach (var unit in power.UnitsInRange(xy)) foreach (var unit in power.UnitsInRange(xy))

View File

@@ -118,6 +118,7 @@ namespace OpenRA.Mods.Common.Traits
IEnumerable<IRenderable> IOrderGenerator.Render(WorldRenderer wr, World world) { yield break; } IEnumerable<IRenderable> IOrderGenerator.Render(WorldRenderer wr, World world) { yield break; }
IEnumerable<IRenderable> IOrderGenerator.RenderAboveShroud(WorldRenderer wr, World world) { yield break; } IEnumerable<IRenderable> IOrderGenerator.RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
IEnumerable<IRenderable> IOrderGenerator.RenderAnnotations(WorldRenderer wr, World world) { yield break; }
string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) string IOrderGenerator.GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {

View File

@@ -296,6 +296,7 @@ namespace OpenRA.Mods.Common.Traits
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
return world.Map.Contains(cell) ? cursor : "generic-blocked"; return world.Map.Contains(cell) ? cursor : "generic-blocked";