From ae645bbafe1de059911154b61f45c90bd89c6754 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 17 Apr 2011 18:57:19 +1200 Subject: [PATCH] fix missing explosion on war factory; remove some nonsense --- OpenRA.Mods.RA/Render/RenderBuilding.cs | 18 ++++++++++-------- .../Render/RenderBuildingTurreted.cs | 8 -------- .../Render/RenderBuildingWarFactory.cs | 2 ++ 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index 1490d92b83..67a53e2df7 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA.Render } } - public class RenderBuilding : RenderSimple, INotifyDamageStateChanged, IRenderModifier + public class RenderBuilding : RenderSimple, INotifyDamageStateChanged, IRenderModifier, INotifyKilled { readonly RenderBuildingInfo Info; @@ -98,16 +98,18 @@ namespace OpenRA.Mods.RA.Render public virtual void DamageStateChanged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) - foreach (var t in FootprintUtils.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, Traits.Util.CenterOfCell(cell), "building", false, 0))); - } - else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) + if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) anim.ReplaceAnim("damaged-idle"); else if (e.DamageState < DamageState.Heavy) anim.ReplaceAnim("idle"); } + + public void Killed(Actor self, AttackInfo e) + { + var bi = self.Info.Traits.Get(); + FootprintUtils.UnpathableTiles(self.Info.Name, bi, self.Location).Do( + t => self.World.AddFrameEndTask( + w => w.Add(new Explosion(w, Traits.Util.CenterOfCell(t), "building", false, 0)))); + } } } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs index 3b371ae190..6d85301f2d 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs @@ -27,13 +27,5 @@ namespace OpenRA.Mods.RA.Render { anim.Play( "idle" ); } - - public override void DamageStateChanged(Actor self, AttackInfo e) - { - if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) - anim.ReplaceAnim("damaged-idle"); - else if (e.DamageState < DamageState.Heavy) - anim.ReplaceAnim("idle"); - } } } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs index 72531f71f8..93601c8316 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs @@ -78,6 +78,8 @@ namespace OpenRA.Mods.RA.Render else roof.ReplaceAnim(roof.CurrentSequence.Name.Replace("damaged-", "")); } + + base.DamageStateChanged(self, e); } public void UnitProduced(Actor self, Actor other, int2 exit)