From 5ee9b5cab42f2b010d1ab7d21039c537ef576449 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 20 Jun 2013 21:41:17 +1200 Subject: [PATCH] Support additional render damage states for buildings. --- OpenRA.Game/Traits/Render/RenderSimple.cs | 8 ++------ OpenRA.Game/Traits/Render/RenderSprites.cs | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index df5adc2e67..76f9acaeb9 100755 --- a/OpenRA.Game/Traits/Render/RenderSimple.cs +++ b/OpenRA.Game/Traits/Render/RenderSimple.cs @@ -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) diff --git a/OpenRA.Game/Traits/Render/RenderSprites.cs b/OpenRA.Game/Traits/Render/RenderSprites.cs index 252254339d..e3b4d8543c 100755 --- a/OpenRA.Game/Traits/Render/RenderSprites.cs +++ b/OpenRA.Game/Traits/Render/RenderSprites.cs @@ -100,5 +100,21 @@ namespace OpenRA.Traits a.Animation.Tick(); } + public static string NormalizeSequence(Animation anim, DamageState state, string baseSequence) + { + var states = new Pair[] + { + 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; + } } }