fix #436 bridges in wrong place in render sequence
This commit is contained in:
@@ -77,6 +77,9 @@ namespace OpenRA.Graphics
|
|||||||
Game.Renderer.EnableScissor(bounds.Left, bounds.Top, bounds.Width, bounds.Height);
|
Game.Renderer.EnableScissor(bounds.Left, bounds.Top, bounds.Width, bounds.Height);
|
||||||
|
|
||||||
terrainRenderer.Draw(this, Game.viewport);
|
terrainRenderer.Draw(this, Game.viewport);
|
||||||
|
foreach (var a in world.traitDict.ActorsWithTraitMultiple<IRenderAsTerrain>(world))
|
||||||
|
foreach (var r in a.Trait.RenderAsTerrain(a.Actor))
|
||||||
|
r.Sprite.DrawAt(r.Pos, this.GetPaletteIndex(r.Palette), r.Scale);
|
||||||
|
|
||||||
foreach (var a in world.Selection.Actors)
|
foreach (var a in world.Selection.Actors)
|
||||||
if (!a.Destroyed)
|
if (!a.Destroyed)
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
public interface ITick { void Tick(Actor self); }
|
public interface ITick { void Tick(Actor self); }
|
||||||
public interface IRender { IEnumerable<Renderable> Render(Actor self); }
|
public interface IRender { IEnumerable<Renderable> Render(Actor self); }
|
||||||
|
|
||||||
public interface IIssueOrder
|
public interface IIssueOrder
|
||||||
{
|
{
|
||||||
IEnumerable<IOrderTargeter> Orders { get; }
|
IEnumerable<IOrderTargeter> Orders { get; }
|
||||||
@@ -202,6 +203,7 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
public interface IPostRenderSelection { void RenderAfterWorld(WorldRenderer wr, Actor self); }
|
public interface IPostRenderSelection { void RenderAfterWorld(WorldRenderer wr, Actor self); }
|
||||||
public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); }
|
public interface IPreRenderSelection { void RenderBeforeWorld(WorldRenderer wr, Actor self); }
|
||||||
|
public interface IRenderAsTerrain { IEnumerable<Renderable> RenderAsTerrain(Actor self); }
|
||||||
|
|
||||||
public struct Target // a target: either an actor, or a fixed location.
|
public struct Target // a target: either an actor, or a fixed location.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ namespace OpenRA.Mods.RA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Bridge: IRender, INotifyDamage
|
class Bridge: IRenderAsTerrain, INotifyDamage
|
||||||
{
|
{
|
||||||
static string cachedTileset;
|
static string cachedTileset;
|
||||||
static Cache<TileReference<ushort,byte>, Sprite> sprites;
|
static Cache<TileReference<ushort,byte>, Sprite> sprites;
|
||||||
@@ -131,7 +131,7 @@ namespace OpenRA.Mods.RA
|
|||||||
return bridges.GetBridge(self.Location + new int2(offset[0], offset[1]));
|
return bridges.GetBridge(self.Location + new int2(offset[0], offset[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Renderable> Render(Actor self)
|
public IEnumerable<Renderable> RenderAsTerrain(Actor self)
|
||||||
{
|
{
|
||||||
foreach (var t in TileSprites[currentTemplate])
|
foreach (var t in TileSprites[currentTemplate])
|
||||||
yield return new Renderable(t.Value, Game.CellSize * t.Key, "terrain", Game.CellSize * t.Key.Y);
|
yield return new Renderable(t.Value, Game.CellSize * t.Key, "terrain", Game.CellSize * t.Key.Y);
|
||||||
|
|||||||
Reference in New Issue
Block a user