Change IOrderGenerator.RenderAfterWorld to return Renderables.
This commit is contained in:
@@ -91,6 +91,9 @@ namespace OpenRA.Graphics
|
|||||||
var effectRenderables = world.Effects
|
var effectRenderables = world.Effects
|
||||||
.SelectMany(e => e.Render(this));
|
.SelectMany(e => e.Render(this));
|
||||||
|
|
||||||
|
if (world.OrderGenerator != null)
|
||||||
|
effectRenderables = effectRenderables.Concat(world.OrderGenerator.RenderAfterWorld(this, world));
|
||||||
|
|
||||||
// Iterating via foreach() copies the structs, so enumerate by index
|
// Iterating via foreach() copies the structs, so enumerate by index
|
||||||
var renderables = worldRenderables.Concat(effectRenderables).ToList();
|
var renderables = worldRenderables.Concat(effectRenderables).ToList();
|
||||||
|
|
||||||
@@ -124,9 +127,6 @@ namespace OpenRA.Graphics
|
|||||||
if (a.Actor.IsInWorld && !a.Actor.Destroyed)
|
if (a.Actor.IsInWorld && !a.Actor.Destroyed)
|
||||||
a.Trait.RenderAfterWorld(this, a.Actor);
|
a.Trait.RenderAfterWorld(this, a.Actor);
|
||||||
|
|
||||||
if (world.OrderGenerator != null)
|
|
||||||
world.OrderGenerator.RenderAfterWorld(this, world);
|
|
||||||
|
|
||||||
var renderShroud = world.RenderPlayer != null ? world.RenderPlayer.Shroud : null;
|
var renderShroud = world.RenderPlayer != null ? world.RenderPlayer.Shroud : null;
|
||||||
|
|
||||||
foreach (var a in world.ActorsWithTrait<IRenderShroud>())
|
foreach (var a in world.ActorsWithTrait<IRenderShroud>())
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace OpenRA.Orders
|
|||||||
|
|
||||||
public virtual void Tick(World world) { }
|
public virtual void Tick(World world) { }
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi) { return world.Map.Contains(xy) ? cursor : "generic-blocked"; }
|
public string GetCursor(World world, CPos xy, MouseInput mi) { return world.Map.Contains(xy) ? cursor : "generic-blocked"; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace OpenRA
|
|||||||
IEnumerable<Order> Order(World world, CPos xy, MouseInput mi);
|
IEnumerable<Order> Order(World world, CPos xy, MouseInput mi);
|
||||||
void Tick(World world);
|
void Tick(World world);
|
||||||
IEnumerable<IRenderable> Render(WorldRenderer wr, World world);
|
IEnumerable<IRenderable> Render(WorldRenderer wr, World world);
|
||||||
void RenderAfterWorld(WorldRenderer wr, World world);
|
IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world);
|
||||||
string GetCursor(World world, CPos xy, MouseInput mi);
|
string GetCursor(World world, CPos xy, MouseInput mi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace OpenRA.Orders
|
|||||||
|
|
||||||
public void Tick(World world) { }
|
public void Tick(World world) { }
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
|
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi)
|
public string GetCursor(World world, CPos xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
|
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi)
|
public string GetCursor(World world, CPos xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -170,10 +170,10 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
CPos lastMousePos;
|
CPos lastMousePos;
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world)
|
||||||
{
|
{
|
||||||
if (!minelayer.IsInWorld)
|
if (!minelayer.IsInWorld)
|
||||||
return;
|
yield break;
|
||||||
|
|
||||||
var movement = minelayer.Trait<IPositionable>();
|
var movement = minelayer.Trait<IPositionable>();
|
||||||
var minefield = GetMinefieldCells(minefieldStart, lastMousePos,
|
var minefield = GetMinefieldCells(minefieldStart, lastMousePos,
|
||||||
@@ -183,8 +183,8 @@ namespace OpenRA.Mods.RA
|
|||||||
foreach (var c in minefield)
|
foreach (var c in minefield)
|
||||||
{
|
{
|
||||||
var tile = movement.CanEnterCell(c) ? tileOk : tileBlocked;
|
var tile = movement.CanEnterCell(c) ? tileOk : tileBlocked;
|
||||||
new SpriteRenderable(tile, world.Map.CenterOfCell(c),
|
yield return new SpriteRenderable(tile, world.Map.CenterOfCell(c),
|
||||||
WVec.Zero, -511, pal, 1f, true).Render(wr);
|
WVec.Zero, -511, pal, 1f, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
|
|
||||||
public virtual void Tick(World world) { }
|
public virtual void Tick(World world) { }
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi) { return !world.ShroudObscures(xy) ? "ability" : "generic-blocked"; }
|
public string GetCursor(World world, CPos xy, MouseInput mi) { return !world.ShroudObscures(xy) ? "ability" : "generic-blocked"; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
|
|
||||||
public void Tick(World world) {}
|
public void Tick(World world) {}
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world)
|
||||||
{
|
{
|
||||||
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
|
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
|
||||||
var topLeft = xy - FootprintUtils.AdjustForBuildingSize(BuildingInfo);
|
var topLeft = xy - FootprintUtils.AdjustForBuildingSize(BuildingInfo);
|
||||||
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
var actorInfo = rules.Actors[Building];
|
var actorInfo = rules.Actors[Building];
|
||||||
foreach (var dec in actorInfo.Traits.WithInterface<IPlaceBuildingDecoration>())
|
foreach (var dec in actorInfo.Traits.WithInterface<IPlaceBuildingDecoration>())
|
||||||
foreach (var r in dec.Render(wr, world, actorInfo, world.Map.CenterOfCell(xy)))
|
foreach (var r in dec.Render(wr, world, actorInfo, world.Map.CenterOfCell(xy)))
|
||||||
r.Render(wr);
|
yield return r;
|
||||||
|
|
||||||
var cells = new Dictionary<CPos, bool>();
|
var cells = new Dictionary<CPos, bool>();
|
||||||
// Linebuild for walls.
|
// Linebuild for walls.
|
||||||
@@ -120,7 +120,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
|
|
||||||
var offset = world.Map.CenterOfCell(topLeft) + FootprintUtils.CenterOffset(world, BuildingInfo) - WPos.Zero;
|
var offset = world.Map.CenterOfCell(topLeft) + FootprintUtils.CenterOffset(world, BuildingInfo) - WPos.Zero;
|
||||||
foreach (var r in preview)
|
foreach (var r in preview)
|
||||||
r.OffsetBy(offset).Render(wr);
|
yield return r.OffsetBy(offset);
|
||||||
|
|
||||||
var res = world.WorldActor.Trait<ResourceLayer>();
|
var res = world.WorldActor.Trait<ResourceLayer>();
|
||||||
var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft);
|
var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft);
|
||||||
@@ -132,8 +132,8 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
foreach (var c in cells)
|
foreach (var c in cells)
|
||||||
{
|
{
|
||||||
var tile = c.Value ? buildOk : buildBlocked;
|
var tile = c.Value ? buildOk : buildBlocked;
|
||||||
new SpriteRenderable(tile, world.Map.CenterOfCell(c.Key),
|
yield return new SpriteRenderable(tile, world.Map.CenterOfCell(c.Key),
|
||||||
WVec.Zero, -511, pal, 1f, true).Render(wr);
|
WVec.Zero, -511, pal, 1f, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
|
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi)
|
public string GetCursor(World world, CPos xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
|
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi)
|
public string GetCursor(World world, CPos xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -173,21 +173,21 @@ namespace OpenRA.Mods.RA
|
|||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world)
|
||||||
{
|
{
|
||||||
if (!self.IsInWorld || self.Owner != self.World.LocalPlayer)
|
if (!self.IsInWorld || self.Owner != self.World.LocalPlayer)
|
||||||
return;
|
yield break;
|
||||||
|
|
||||||
if (!self.Trait<PortableChrono>().Info.HasDistanceLimit)
|
if (!self.Trait<PortableChrono>().Info.HasDistanceLimit)
|
||||||
return;
|
yield break;
|
||||||
|
|
||||||
new RangeCircleRenderable(
|
yield return new RangeCircleRenderable(
|
||||||
self.CenterPosition,
|
self.CenterPosition,
|
||||||
WRange.FromCells(self.Trait<PortableChrono>().Info.MaxDistance),
|
WRange.FromCells(self.Trait<PortableChrono>().Info.MaxDistance),
|
||||||
0,
|
0,
|
||||||
Color.FromArgb(128, Color.LawnGreen),
|
Color.FromArgb(128, Color.LawnGreen),
|
||||||
Color.FromArgb(96, Color.Black)
|
Color.FromArgb(96, Color.Black)
|
||||||
).Render(wr);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi)
|
public string GetCursor(World world, CPos xy, MouseInput mi)
|
||||||
|
|||||||
@@ -121,13 +121,14 @@ namespace OpenRA.Mods.RA
|
|||||||
world.CancelInputMode();
|
world.CancelInputMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world)
|
||||||
{
|
{
|
||||||
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
|
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
|
||||||
var targetUnits = power.UnitsInRange(xy);
|
var targetUnits = power.UnitsInRange(xy);
|
||||||
|
|
||||||
foreach (var unit in targetUnits)
|
foreach (var unit in targetUnits)
|
||||||
if (manager.self.Owner.Shroud.IsTargetable(unit))
|
if (manager.self.Owner.Shroud.IsTargetable(unit))
|
||||||
new SelectionBoxRenderable(unit, Color.Red).Render(wr);
|
yield return new SelectionBoxRenderable(unit, Color.Red);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
|
||||||
@@ -203,11 +204,11 @@ namespace OpenRA.Mods.RA
|
|||||||
world.CancelInputMode();
|
world.CancelInputMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world)
|
||||||
{
|
{
|
||||||
foreach (var unit in power.UnitsInRange(sourceLocation))
|
foreach (var unit in power.UnitsInRange(sourceLocation))
|
||||||
if (manager.self.Owner.Shroud.IsTargetable(unit))
|
if (manager.self.Owner.Shroud.IsTargetable(unit))
|
||||||
new SelectionBoxRenderable(unit, Color.Red).Render(wr);
|
yield return new SelectionBoxRenderable(unit, Color.Red);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
|
||||||
|
|||||||
@@ -98,11 +98,11 @@ namespace OpenRA.Mods.RA
|
|||||||
world.CancelInputMode();
|
world.CancelInputMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> RenderAfterWorld(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))
|
||||||
new SelectionBoxRenderable(unit, Color.Red).Render(wr);
|
yield return new SelectionBoxRenderable(unit, Color.Red);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ namespace OpenRA.Mods.RA
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
|
||||||
public void RenderAfterWorld(WorldRenderer wr, World world) { }
|
public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr, World world) { yield break; }
|
||||||
public string GetCursor(World world, CPos xy, MouseInput mi) { return world.Map.Contains(xy) ? cursor : "generic-blocked"; }
|
public string GetCursor(World world, CPos xy, MouseInput mi) { return world.Map.Contains(xy) ? cursor : "generic-blocked"; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user