Support additional render damage states for buildings.

This commit is contained in:
Paul Chote
2013-06-20 21:41:17 +12:00
parent 1a3a4bd7ba
commit 5ee9b5cab4
2 changed files with 18 additions and 6 deletions

View File

@@ -55,13 +55,9 @@ namespace OpenRA.Traits
.FirstOrDefault();
}
public virtual string NormalizeSequence(Actor self, string baseSequence)
public string NormalizeSequence(Actor self, string baseSequence)
{
string damageState = self.GetDamageState() >= DamageState.Heavy ? "damaged-" : "";
if (anim.HasSequence(damageState + baseSequence))
return damageState + baseSequence;
else
return baseSequence;
return NormalizeSequence(anim, self.GetDamageState(), baseSequence);
}
public void PlayCustomAnim(Actor self, string name)

View File

@@ -100,5 +100,21 @@ namespace OpenRA.Traits
a.Animation.Tick();
}
public static string NormalizeSequence(Animation anim, DamageState state, string baseSequence)
{
var states = new Pair<DamageState, string>[]
{
Pair.New(DamageState.Critical, "critical-"),
Pair.New(DamageState.Heavy, "damaged-"),
Pair.New(DamageState.Medium, "scratched-"),
Pair.New(DamageState.Light, "scuffed-")
};
foreach (var s in states)
if (state >= s.First && anim.HasSequence(s.Second+baseSequence))
return s.Second+baseSequence;
return baseSequence;
}
}
}