Merge pull request #7593 from turbedi/LegacyDecoder_changes

Minor cleanups for Legacy Storyboard/Beatmap decoder
This commit is contained in:
Dean Herbert 2020-01-26 17:56:59 +09:00 committed by GitHub
commit 91aa2ad990
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 15 deletions

View File

@ -239,11 +239,11 @@ private void handleMetadata(string line)
break;
case @"Source":
beatmap.BeatmapInfo.Metadata.Source = pair.Value;
metadata.Source = pair.Value;
break;
case @"Tags":
beatmap.BeatmapInfo.Metadata.Tags = pair.Value;
metadata.Tags = pair.Value;
break;
case @"BeatmapID":
@ -300,13 +300,11 @@ private void handleEvent(string line)
switch (type)
{
case LegacyEventType.Background:
string bgFilename = split[2].Trim('"');
beatmap.BeatmapInfo.Metadata.BackgroundFile = bgFilename.ToStandardisedPath();
beatmap.BeatmapInfo.Metadata.BackgroundFile = CleanFilename(split[2]);
break;
case LegacyEventType.Video:
string videoFilename = split[2].Trim('"');
beatmap.BeatmapInfo.Metadata.VideoFile = videoFilename.ToStandardisedPath();
beatmap.BeatmapInfo.Metadata.VideoFile = CleanFilename(split[2]);
break;
case LegacyEventType.Break:

View File

@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using osu.Framework.Extensions;
using osu.Framework.Logging;
using osu.Game.Audio;
using osu.Game.Beatmaps.ControlPoints;
@ -115,7 +116,7 @@ private void handleColours(T output, string line)
protected KeyValuePair<string, string> SplitKeyVal(string line, char separator = ':')
{
var split = line.Trim().Split(new[] { separator }, 2);
var split = line.Split(separator, 2);
return new KeyValuePair<string, string>
(
@ -124,6 +125,8 @@ protected KeyValuePair<string, string> SplitKeyVal(string line, char separator =
);
}
protected string CleanFilename(string path) => path.Trim('"').ToStandardisedPath();
protected enum Section
{
None,

View File

@ -7,7 +7,6 @@
using System.IO;
using osuTK;
using osuTK.Graphics;
using osu.Framework.Extensions;
using osu.Framework.Graphics;
using osu.Game.IO;
using osu.Game.Storyboards;
@ -65,13 +64,16 @@ protected override void ParseLine(Storyboard storyboard, Section section, string
private void handleEvents(string line)
{
var depth = 0;
var lineSpan = line.AsSpan();
while (line.StartsWith(" ", StringComparison.Ordinal) || line.StartsWith("_", StringComparison.Ordinal))
while (lineSpan.StartsWith(" ", StringComparison.Ordinal) || lineSpan.StartsWith("_", StringComparison.Ordinal))
{
lineSpan = lineSpan.Slice(1);
++depth;
line = line.Substring(1);
}
line = lineSpan.ToString();
decodeVariables(ref line);
string[] split = line.Split(',');
@ -89,7 +91,7 @@ private void handleEvents(string line)
{
var layer = parseLayer(split[1]);
var origin = parseOrigin(split[2]);
var path = cleanFilename(split[3]);
var path = CleanFilename(split[3]);
var x = float.Parse(split[4], NumberFormatInfo.InvariantInfo);
var y = float.Parse(split[5], NumberFormatInfo.InvariantInfo);
storyboardSprite = new StoryboardSprite(path, origin, new Vector2(x, y));
@ -101,7 +103,7 @@ private void handleEvents(string line)
{
var layer = parseLayer(split[1]);
var origin = parseOrigin(split[2]);
var path = cleanFilename(split[3]);
var path = CleanFilename(split[3]);
var x = float.Parse(split[4], NumberFormatInfo.InvariantInfo);
var y = float.Parse(split[5], NumberFormatInfo.InvariantInfo);
var frameCount = int.Parse(split[6]);
@ -116,7 +118,7 @@ private void handleEvents(string line)
{
var time = double.Parse(split[1], CultureInfo.InvariantCulture);
var layer = parseLayer(split[2]);
var path = cleanFilename(split[3]);
var path = CleanFilename(split[3]);
var volume = split.Length > 4 ? float.Parse(split[4], CultureInfo.InvariantCulture) : 100;
storyboard.GetLayer(layer).Add(new StoryboardSampleInfo(path, time, (int)volume));
break;
@ -331,7 +333,5 @@ private void decodeVariables(ref string line)
break;
}
}
private string cleanFilename(string path) => path.Trim('"').ToStandardisedPath();
}
}