diff --git a/OpenRA.Game/Effects/MoveFlash.cs b/OpenRA.Game/Effects/MoveFlash.cs index aeab773f24..1f457c199b 100755 --- a/OpenRA.Game/Effects/MoveFlash.cs +++ b/OpenRA.Game/Effects/MoveFlash.cs @@ -40,7 +40,7 @@ namespace OpenRA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow"); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow", (int)pos.Y); } } } diff --git a/OpenRA.Game/Effects/RepairIndicator.cs b/OpenRA.Game/Effects/RepairIndicator.cs index 3c3b3dabff..961f3a2d0f 100755 --- a/OpenRA.Game/Effects/RepairIndicator.cs +++ b/OpenRA.Game/Effects/RepairIndicator.cs @@ -35,7 +35,7 @@ namespace OpenRA.Effects public IEnumerable Render() { yield return new Renderable(anim.Image, - a.CenterLocation - .5f * anim.Image.size, "chrome"); + a.CenterLocation - .5f * anim.Image.size, "chrome", (int)a.CenterLocation.Y); } } } diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index ad6e1525ec..7120e5ea93 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -41,7 +41,7 @@ namespace OpenRA.Graphics { public int Compare(Renderable x, Renderable y) { - return (x.Pos.Y + x.Sprite.size.Y + x.ZOffset).CompareTo(y.Pos.Y + y.Sprite.size.Y + y.ZOffset); + return (x.Z + x.ZOffset).CompareTo(y.Z + y.ZOffset); } } diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 934392ff63..c094380ca3 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -138,22 +138,24 @@ namespace OpenRA.Traits public readonly Sprite Sprite; public readonly float2 Pos; public readonly string Palette; + public readonly int Z; public readonly int ZOffset; - public Renderable(Sprite sprite, float2 pos, string palette, int zOffset) + public Renderable(Sprite sprite, float2 pos, string palette, int z, int zOffset) { Sprite = sprite; Pos = pos; Palette = palette; + Z = z; ZOffset = zOffset; } - public Renderable(Sprite sprite, float2 pos, string palette) - : this(sprite, pos, palette, 0) { } + public Renderable(Sprite sprite, float2 pos, string palette, int z) + : this(sprite, pos, palette, z, 0) { } - public Renderable WithPalette(string newPalette) { return new Renderable(Sprite, Pos, newPalette, ZOffset); } - public Renderable WithZOffset(int newOffset) { return new Renderable(Sprite, Pos, Palette, newOffset); } - public Renderable WithPos(float2 newPos) { return new Renderable(Sprite, newPos, Palette, ZOffset); } + public Renderable WithPalette(string newPalette) { return new Renderable(Sprite, Pos, newPalette, Z, ZOffset); } + public Renderable WithZOffset(int newOffset) { return new Renderable(Sprite, Pos, Palette, Z, newOffset); } + public Renderable WithPos(float2 newPos) { return new Renderable(Sprite, newPos, Palette, Z, ZOffset); } } public interface ITraitInfo { object Create(ActorInitializer init); } diff --git a/OpenRA.Game/Traits/Util.cs b/OpenRA.Game/Traits/Util.cs index 0a6efdd507..92cbf92377 100755 --- a/OpenRA.Game/Traits/Util.cs +++ b/OpenRA.Game/Traits/Util.cs @@ -100,7 +100,7 @@ namespace OpenRA.Traits { var pal = self.Owner == null ? "player0" : self.Owner.Palette; var loc = location - 0.5f * s.size; - return new Renderable(s, loc.Round(), pal); + return new Renderable(s, loc.Round(), pal, (int)self.CenterLocation.Y); } public static IActivity SequenceActivities(params IActivity[] acts) diff --git a/OpenRA.Mods.Cnc/Effects/IonCannon.cs b/OpenRA.Mods.Cnc/Effects/IonCannon.cs index 2698101f9d..aa409de00b 100644 --- a/OpenRA.Mods.Cnc/Effects/IonCannon.cs +++ b/OpenRA.Mods.Cnc/Effects/IonCannon.cs @@ -36,7 +36,7 @@ namespace OpenRA.Mods.Cnc.Effects { yield return new Renderable(anim.Image, target.CenterLocation - new float2(.5f * anim.Image.size.X, anim.Image.size.Y - Game.CellSize), - "effect"); + "effect", (int)target.CenterLocation.Y); } void Finish( World world ) diff --git a/OpenRA.Mods.RA/Bridge.cs b/OpenRA.Mods.RA/Bridge.cs index d0e20726bf..1b82875838 100644 --- a/OpenRA.Mods.RA/Bridge.cs +++ b/OpenRA.Mods.RA/Bridge.cs @@ -134,7 +134,7 @@ namespace OpenRA.Mods.RA public IEnumerable Render(Actor self) { foreach (var t in TileSprites[currentTemplate]) - yield return new Renderable(t.Value, Game.CellSize * t.Key, "terrain"); + yield return new Renderable(t.Value, Game.CellSize * t.Key, "terrain", Game.CellSize * t.Key.Y); } bool IsIntact(Bridge b) diff --git a/OpenRA.Mods.RA/Effects/Bullet.cs b/OpenRA.Mods.RA/Effects/Bullet.cs index 0cf0563774..c3d6dc91ae 100755 --- a/OpenRA.Mods.RA/Effects/Bullet.cs +++ b/OpenRA.Mods.RA/Effects/Bullet.cs @@ -134,15 +134,15 @@ namespace OpenRA.Mods.RA.Effects if (Info.High || Info.Angle > 0) { if (Info.Shadow) - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow"); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow", (int)pos.Y); var highPos = pos - new float2(0, GetAltitude()); - yield return new Renderable(anim.Image, highPos - .5f * anim.Image.size, Args.firedBy.Owner.Palette); + yield return new Renderable(anim.Image, highPos - .5f * anim.Image.size, Args.firedBy.Owner.Palette, (int)pos.Y); } else yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, - Args.weapon.Underwater ? "shadow" : Args.firedBy.Owner.Palette); + Args.weapon.Underwater ? "shadow" : Args.firedBy.Owner.Palette, (int)pos.Y); } } diff --git a/OpenRA.Mods.RA/Effects/Corpse.cs b/OpenRA.Mods.RA/Effects/Corpse.cs index 665e9b1968..50a2894fa9 100644 --- a/OpenRA.Mods.RA/Effects/Corpse.cs +++ b/OpenRA.Mods.RA/Effects/Corpse.cs @@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, owner.Palette); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, owner.Palette, (int)pos.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/CrateEffect.cs b/OpenRA.Mods.RA/Effects/CrateEffect.cs index cb48a95c42..3fe0b8413b 100644 --- a/OpenRA.Mods.RA/Effects/CrateEffect.cs +++ b/OpenRA.Mods.RA/Effects/CrateEffect.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { yield return new Renderable(anim.Image, - a.CenterLocation - .5f * anim.Image.size + offset, "effect"); + a.CenterLocation - .5f * anim.Image.size + offset, "effect", (int)a.CenterLocation.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/Explosion.cs b/OpenRA.Mods.RA/Effects/Explosion.cs index 9cbae9eaa1..7c07968c2e 100644 --- a/OpenRA.Mods.RA/Effects/Explosion.cs +++ b/OpenRA.Mods.RA/Effects/Explosion.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect"); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect", (int)pos.Y); } public Player Owner { get { return null; } } diff --git a/OpenRA.Mods.RA/Effects/GpsSatellite.cs b/OpenRA.Mods.RA/Effects/GpsSatellite.cs index 32742f5611..25736ab9ad 100644 --- a/OpenRA.Mods.RA/Effects/GpsSatellite.cs +++ b/OpenRA.Mods.RA/Effects/GpsSatellite.cs @@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image,offset, "effect"); + yield return new Renderable(anim.Image,offset, "effect", (int)offset.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/GravityBomb.cs b/OpenRA.Mods.RA/Effects/GravityBomb.cs index 0b4edc2c6f..5f3424a91c 100755 --- a/OpenRA.Mods.RA/Effects/GravityBomb.cs +++ b/OpenRA.Mods.RA/Effects/GravityBomb.cs @@ -54,7 +54,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { yield return new Renderable(anim.Image, - Args.dest - new int2(0, altitude) - .5f * anim.Image.size, "effect"); + Args.dest - new int2(0, altitude) - .5f * anim.Image.size, "effect", Args.dest.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/Missile.cs b/OpenRA.Mods.RA/Effects/Missile.cs index 6f5775a7b5..0a0fa0f14a 100755 --- a/OpenRA.Mods.RA/Effects/Missile.cs +++ b/OpenRA.Mods.RA/Effects/Missile.cs @@ -123,7 +123,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, Pos - 0.5f * anim.Image.size - new float2(0, Altitude), "effect"); + yield return new Renderable(anim.Image, Pos - 0.5f * anim.Image.size - new float2(0, Altitude), "effect", (int)Pos.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/NukeLaunch.cs b/OpenRA.Mods.RA/Effects/NukeLaunch.cs index ab060c94aa..da9532432a 100755 --- a/OpenRA.Mods.RA/Effects/NukeLaunch.cs +++ b/OpenRA.Mods.RA/Effects/NukeLaunch.cs @@ -82,7 +82,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - 0.5f * anim.Image.size - new float2(0, altitude), "effect"); + yield return new Renderable(anim.Image, pos - 0.5f * anim.Image.size - new float2(0, altitude), "effect", (int)pos.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs b/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs index 0766ffa28d..ee99372750 100644 --- a/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs +++ b/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { yield return new Renderable(doors.Image, - a.CenterLocation - .5f * doors.Image.size + doorOffset, "effect"); + a.CenterLocation - .5f * doors.Image.size + doorOffset, "effect", (int)doorOffset.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/Smoke.cs b/OpenRA.Mods.RA/Effects/Smoke.cs index 405aec5f3b..ccb9d3fc4a 100644 --- a/OpenRA.Mods.RA/Effects/Smoke.cs +++ b/OpenRA.Mods.RA/Effects/Smoke.cs @@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect"); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect", (int)pos.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/TeslaZap.cs b/OpenRA.Mods.RA/Effects/TeslaZap.cs index aad91a68b3..6cb9d5bfb5 100755 --- a/OpenRA.Mods.RA/Effects/TeslaZap.cs +++ b/OpenRA.Mods.RA/Effects/TeslaZap.cs @@ -101,7 +101,7 @@ namespace OpenRA.Mods.RA.Effects var step = steps.Where(t => (to - (z + new float2(t[0],t[1]))).LengthSquared < (to - z).LengthSquared ) .OrderBy(t => Math.Abs(float2.Dot(z + new float2(t[0], t[1]), q) + c)).First(); - rs.Add(new Renderable(s.GetSprite(step[4]), z + new float2(step[2], step[3]), "effect")); + rs.Add(new Renderable(s.GetSprite(step[4]), z + new float2(step[2], step[3]), "effect", (int)from.Y)); z += new float2(step[0], step[1]); } diff --git a/OpenRA.Mods.RA/GainsExperience.cs b/OpenRA.Mods.RA/GainsExperience.cs index 906d4c01c1..71f5920c8a 100644 --- a/OpenRA.Mods.RA/GainsExperience.cs +++ b/OpenRA.Mods.RA/GainsExperience.cs @@ -93,8 +93,8 @@ namespace OpenRA.Mods.RA { RankAnim.Tick(); // hack var bounds = self.GetBounds(true); - yield return new Renderable(RankAnim.Image, - new float2(bounds.Right - 6, bounds.Bottom - 8), "effect"); + yield return new Renderable(RankAnim.Image, + new float2(bounds.Right - 6, bounds.Bottom - 8), "effect", (int)self.CenterLocation.Y); } } } diff --git a/OpenRA.Mods.RA/Render/RenderUnitTurreted.cs b/OpenRA.Mods.RA/Render/RenderUnitTurreted.cs index c4e187d57b..53b3957b51 100755 --- a/OpenRA.Mods.RA/Render/RenderUnitTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderUnitTurreted.cs @@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA.Render anims.Add( "turret_{0}".F(i), new AnimationWithOffset( turretAnim, () => Combat.GetTurretPosition( self, facing, turret ), - null) { ZOffset = 70 }); + null)); if (attackInfo.MuzzleFlash) {