Add annotation support to IOrderGenerator.
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
Reference in New Issue
Block a user