Merge pull request #3221 from smoogipoo/fix-variables-parsing

Fix storyboard variables not supporting prefixes/suffixes
This commit is contained in:
Dean Herbert 2018-08-14 21:41:53 +09:00 committed by GitHub
commit c2fe0241e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 8 deletions

View File

@ -86,5 +86,19 @@ namespace osu.Game.Tests.Beatmaps.Formats
Assert.AreEqual(78993, animation.StartTime);
}
}
[Test]
public void TestDecodeVariableWithSuffix()
{
var decoder = new LegacyStoryboardDecoder();
using (var resStream = Resource.OpenResource("variable-with-suffix.osb"))
using (var stream = new StreamReader(resStream))
{
var storyboard = decoder.Decode(stream);
StoryboardLayer background = storyboard.Layers.Single(l => l.Depth == 3);
Assert.AreEqual(123456, ((StoryboardSprite)background.Elements.Single()).InitialPosition.X);
}
}
}
}

View File

@ -0,0 +1,5 @@
[Variables]
$var=1234
[Events]
Sprite,Background,TopCentre,"img.jpg",$var56,240

View File

@ -289,15 +289,10 @@ namespace osu.Game.Beatmaps.Formats
while (line.IndexOf('$') >= 0)
{
string origLine = line;
string[] split = line.Split(',');
for (int i = 0; i < split.Length; i++)
{
var item = split[i];
if (item.StartsWith("$") && variables.ContainsKey(item))
split[i] = variables[item];
}
line = string.Join(",", split);
foreach (var v in variables)
line = line.Replace(v.Key, v.Value);
if (line == origLine)
break;
}