Support multiple-damage states for walls (WTF Westwood: there are walls with 2, 3, and 4 damage states 0_o)

This commit is contained in:
pchote
2010-02-27 02:53:13 +13:00
parent bb9002aa61
commit 605ae8d4d5
6 changed files with 55 additions and 34 deletions

View File

@@ -24,12 +24,14 @@ namespace OpenRa.Traits
{
class RenderBuildingWallInfo : RenderBuildingInfo
{
public readonly int DamageStates = 2;
public override object Create(Actor self) { return new RenderBuildingWall(self); }
}
class RenderBuildingWall : RenderBuilding
{
string seqName;
int damageStates;
Actor self;
public RenderBuildingWall(Actor self)
@@ -37,8 +39,9 @@ namespace OpenRa.Traits
{
seqName = "idle";
this.self = self;
this.damageStates = self.Info.Traits.Get<RenderBuildingWallInfo>().DamageStates;
}
public override void Damaged(Actor self, AttackInfo e)
{
if (!e.DamageStateChanged) return;
@@ -48,10 +51,21 @@ namespace OpenRa.Traits
case DamageState.Normal:
seqName = "idle";
break;
case DamageState.ThreeQuarter:
if (damageStates >= 4)
seqName = "minor-damaged-idle";
break;
case DamageState.Half:
seqName = "damaged-idle";
Sound.Play("kaboom1.aud");
break;
case DamageState.Quarter:
if (damageStates >= 3)
{
seqName = "critical-idle";
Sound.Play("kaboom1.aud");
}
break;
}
}