fix missing explosion on war factory; remove some nonsense
This commit is contained in:
@@ -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))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user