Remove passing the warheads from DamageWarhead to AttackInfo.

Added a Damage class to pass damage value and damage(types) instead.
This removes a great amount of overhead and longterm opens possibilities to have damagetypes without warheads.
This commit is contained in:
Zimmermann Gyula
2016-06-24 13:18:15 +02:00
parent 6342b40bfd
commit cf8fff2b99
30 changed files with 69 additions and 64 deletions

View File

@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Traits
public void Damaged(Actor self, AttackInfo e)
{
if (e.Damage > 0)
if (e.Damage.Value > 0)
Panic();
}

View File

@@ -56,8 +56,7 @@ namespace OpenRA.Mods.Common.Traits
public void Damaged(Actor self, AttackInfo e)
{
var warhead = e.Warhead as DamageWarhead;
if (e.Damage <= 0 || warhead == null || !warhead.DamageTypes.Overlaps(info.DamageTriggers))
if (e.Damage.Value <= 0 || !e.Damage.DamageTypes.Overlaps(info.DamageTriggers))
return;
if (!IsProne)
@@ -79,16 +78,15 @@ namespace OpenRA.Mods.Common.Traits
get { return true; }
}
public int GetDamageModifier(Actor attacker, IWarhead warhead)
public int GetDamageModifier(Actor attacker, Damage damage)
{
if (!IsProne)
return 100;
var damageWh = warhead as DamageWarhead;
if (damageWh == null)
if (damage.DamageTypes.Count == 0)
return 100;
var modifierPercentages = info.DamageModifiers.Where(x => damageWh.DamageTypes.Contains(x.Key)).Select(x => x.Value);
var modifierPercentages = info.DamageModifiers.Where(x => damage.DamageTypes.Contains(x.Key)).Select(x => x.Value);
return Util.ApplyPercentageModifiers(100, modifierPercentages);
}

View File

@@ -41,10 +41,9 @@ namespace OpenRA.Mods.Common.Traits
this.self = self;
}
public int GetDamageModifier(Actor attacker, IWarhead warhead)
public int GetDamageModifier(Actor attacker, Damage damage)
{
var damageWh = warhead as DamageWarhead;
if (attacker.Owner.IsAlliedWith(self.Owner) && (damageWh != null && damageWh.Damage < 0) && !Info.ModifyHealing)
if (attacker.Owner.IsAlliedWith(self.Owner) && damage.Value < 0 && !Info.ModifyHealing)
return FullDamage;
var world = self.World;