From 999eef2ec9fc6f29ab6d37dcb138462749821db9 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 16 Oct 2010 09:30:32 +1300 Subject: [PATCH] #157 explosions weren't taking altitude into account --- OpenRA.Mods.RA/Combat.cs | 2 +- OpenRA.Mods.RA/Effects/Explosion.cs | 8 ++++++-- OpenRA.Mods.RA/Render/RenderBuilding.cs | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/OpenRA.Mods.RA/Combat.cs b/OpenRA.Mods.RA/Combat.cs index 9700bf0771..67e4fea214 100755 --- a/OpenRA.Mods.RA/Combat.cs +++ b/OpenRA.Mods.RA/Combat.cs @@ -44,7 +44,7 @@ namespace OpenRA.Mods.RA if (explosionType != null) world.AddFrameEndTask( - w => w.Add(new Explosion(w, args.dest, explosionType, isWater))); + w => w.Add(new Explosion(w, args.dest, explosionType, isWater, args.destAltitude))); Sound.Play(GetImpactSound(warhead, isWater), args.dest); diff --git a/OpenRA.Mods.RA/Effects/Explosion.cs b/OpenRA.Mods.RA/Effects/Explosion.cs index 7c07968c2e..ce2abd2a78 100644 --- a/OpenRA.Mods.RA/Effects/Explosion.cs +++ b/OpenRA.Mods.RA/Effects/Explosion.cs @@ -19,10 +19,12 @@ namespace OpenRA.Mods.RA.Effects { Animation anim; int2 pos; + int altitude; - public Explosion(World world, int2 pixelPos, string style, bool isWater) + public Explosion(World world, int2 pixelPos, string style, bool isWater, int altitude) { this.pos = pixelPos; + this.altitude = altitude; anim = new Animation("explosion"); anim.PlayThen(style, () => world.AddFrameEndTask(w => w.Remove(this))); @@ -32,7 +34,9 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect", (int)pos.Y); + yield return new Renderable(anim.Image, + pos - .5f * anim.Image.size - new int2(0,altitude), + "effect", (int)pos.Y - altitude); } public Player Owner { get { return null; } } diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index 25958148b1..24e0d7553f 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -90,7 +90,7 @@ namespace OpenRA.Mods.RA.Render foreach (var t in Footprint.UnpathableTiles( self.Info.Name, self.Info.Traits.Get(), self.Location )) { var cell = t; // required: c# fails at bindings - self.World.AddFrameEndTask(w => w.Add(new Explosion(w, Util.CenterOfCell(cell), "building", false))); + self.World.AddFrameEndTask(w => w.Add(new Explosion(w, Util.CenterOfCell(cell), "building", false, 0))); } else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) {