From 2e9e4cff5c003ccc671423dda3c4b154b7ec4134 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 10 Jul 2014 17:16:46 +1200 Subject: [PATCH] Allow NormalizeSequence to remove existing damage prefixes. Fixes #5909. --- OpenRA.Game/Traits/Render/RenderSimple.cs | 4 ++-- OpenRA.Game/Traits/Render/RenderSprites.cs | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index 032eb4edd5..01d65ceec9 100755 --- a/OpenRA.Game/Traits/Render/RenderSimple.cs +++ b/OpenRA.Game/Traits/Render/RenderSimple.cs @@ -47,9 +47,9 @@ namespace OpenRA.Traits public int2 SelectionSize(Actor self) { return AutoSelectionSize(self); } - public string NormalizeSequence(Actor self, string baseSequence) + public string NormalizeSequence(Actor self, string sequence) { - return NormalizeSequence(DefaultAnimation, self.GetDamageState(), baseSequence); + return NormalizeSequence(DefaultAnimation, self.GetDamageState(), sequence); } public void PlayCustomAnim(Actor self, string name) diff --git a/OpenRA.Game/Traits/Render/RenderSprites.cs b/OpenRA.Game/Traits/Render/RenderSprites.cs index 3faad9748d..df8f56fa03 100755 --- a/OpenRA.Game/Traits/Render/RenderSprites.cs +++ b/OpenRA.Game/Traits/Render/RenderSprites.cs @@ -149,7 +149,7 @@ namespace OpenRA.Traits anims.Remove(key); } - public static string NormalizeSequence(Animation anim, DamageState state, string baseSequence) + public static string NormalizeSequence(Animation anim, DamageState state, string sequence) { var states = new Pair[] { @@ -159,11 +159,21 @@ namespace OpenRA.Traits Pair.New(DamageState.Light, "scuffed-") }; + // Remove existing damage prefix foreach (var s in states) - if (state >= s.First && anim.HasSequence(s.Second + baseSequence)) - return s.Second + baseSequence; + { + if (sequence.StartsWith(s.Second)) + { + sequence = sequence.Substring(s.Second.Length); + break; + } + } - return baseSequence; + foreach (var s in states) + if (state >= s.First && anim.HasSequence(s.Second + sequence)) + return s.Second + sequence; + + return sequence; } // Required by RenderSimple