Add an INotifyKilled interface, which is what most things that used INotifyDamaged actually cared about.

This commit is contained in:
Paul Chote
2011-04-16 10:58:35 +12:00
parent d9fc84b55e
commit 1c2574f4f4
22 changed files with 135 additions and 185 deletions

View File

@@ -23,22 +23,19 @@ namespace OpenRA.Mods.RA
public readonly int Chance = 100;
}
class Explodes : INotifyDamage
class Explodes : INotifyKilled
{
public void Damaged(Actor self, AttackInfo e)
public void Killed(Actor self, AttackInfo e)
{
if (e.DamageState == DamageState.Dead)
{
if (self.World.SharedRandom.Next(100) > self.Info.Traits.Get<ExplodesInfo>().Chance)
return;
if (self.World.SharedRandom.Next(100) > self.Info.Traits.Get<ExplodesInfo>().Chance)
return;
var weapon = ChooseWeaponForExplosion(self);
if (weapon != null)
{
var move = self.TraitOrDefault<IMove>();
var altitude = move != null ? move.Altitude : 0;
Combat.DoExplosion(e.Attacker, weapon, self.CenterLocation, altitude);
}
var weapon = ChooseWeaponForExplosion(self);
if (weapon != null)
{
var move = self.TraitOrDefault<IMove>();
var altitude = move != null ? move.Altitude : 0;
Combat.DoExplosion(e.Attacker, weapon, self.CenterLocation, altitude);
}
}