further unhacking to localise extended damage state stuff to JUST WALLS

This commit is contained in:
Chris Forbes
2010-03-27 10:11:24 +13:00
parent faa8f54e7c
commit 13e6711a3b
4 changed files with 27 additions and 27 deletions

View File

@@ -41,12 +41,36 @@ namespace OpenRA.Traits
this.self = self;
this.damageStates = self.Info.Traits.Get<RenderBuildingWallInfo>().DamageStates;
}
enum ExtendedDamageState { Normal, ThreeQuarter, Half, Quarter, Dead };
ExtendedDamageState GetExtendedState( Actor self, int damage )
{
var effectiveHealth = self.Health + damage;
if (effectiveHealth <= 0)
return ExtendedDamageState.Dead;
if (effectiveHealth < self.GetMaxHP() * Rules.General.ConditionRed)
return ExtendedDamageState.Quarter;
if (effectiveHealth < self.GetMaxHP() * Rules.General.ConditionYellow)
return ExtendedDamageState.Half;
if (effectiveHealth < self.GetMaxHP() * 0.75)
return ExtendedDamageState.ThreeQuarter;
return ExtendedDamageState.Normal;
}
public override void Damaged(Actor self, AttackInfo e)
{
if (!e.ExtendedDamageStateChanged) return;
var oldState = GetExtendedState(self, e.Damage);
var newState = GetExtendedState(self, 0);
switch (e.ExtendedDamageState)
if (oldState == newState) return;
switch (newState)
{
case ExtendedDamageState.Normal:
seqName = "idle";