fix missing explosion on war factory; remove some nonsense

This commit is contained in:
Chris Forbes
2011-04-17 18:57:19 +12:00
committed by Paul Chote
parent 4f76876f05
commit ae645bbafe
3 changed files with 12 additions and 16 deletions

View File

@@ -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; readonly RenderBuildingInfo Info;
@@ -98,16 +98,18 @@ namespace OpenRA.Mods.RA.Render
public virtual void DamageStateChanged(Actor self, AttackInfo e) public virtual void DamageStateChanged(Actor self, AttackInfo e)
{ {
if (e.DamageState == DamageState.Dead) if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy)
foreach (var t in FootprintUtils.UnpathableTiles( self.Info.Name, self.Info.Traits.Get<BuildingInfo>(), 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)
anim.ReplaceAnim("damaged-idle"); anim.ReplaceAnim("damaged-idle");
else if (e.DamageState < DamageState.Heavy) else if (e.DamageState < DamageState.Heavy)
anim.ReplaceAnim("idle"); anim.ReplaceAnim("idle");
} }
public void Killed(Actor self, AttackInfo e)
{
var bi = self.Info.Traits.Get<BuildingInfo>();
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))));
}
} }
} }

View File

@@ -27,13 +27,5 @@ namespace OpenRA.Mods.RA.Render
{ {
anim.Play( "idle" ); 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");
}
} }
} }

View File

@@ -78,6 +78,8 @@ namespace OpenRA.Mods.RA.Render
else else
roof.ReplaceAnim(roof.CurrentSequence.Name.Replace("damaged-", "")); roof.ReplaceAnim(roof.CurrentSequence.Name.Replace("damaged-", ""));
} }
base.DamageStateChanged(self, e);
} }
public void UnitProduced(Actor self, Actor other, int2 exit) public void UnitProduced(Actor self, Actor other, int2 exit)