From 5b727065f3316b326d41aa6695796ba72c4dd9f4 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Fri, 17 Mar 2023 17:59:59 +0800 Subject: [PATCH] Adapt conversion for RawChartResource. --- .../Crtr/Browsing/LegacyResourceManager.cs | 73 ++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs index dea87cb..501068b 100644 --- a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs +++ b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs @@ -169,7 +169,7 @@ namespace Cryville.Crtr.Browsing { var dir = new DirectoryInfo(_rootPath + "/charts/" + res.Name); if (!dir.Exists) dir.Create(); using (var writer = new StreamWriter(dir.FullName + "/.json")) { - writer.Write(JsonConvert.SerializeObject(tres.Main, Game.GlobalJsonSerializerSettings)); + writer.Write(JsonConvert.SerializeObject(ConvertChartData(tres.Main), Game.GlobalJsonSerializerSettings)); } using (var writer = new StreamWriter(dir.FullName + "/.umgc")) { tres.Meta.data = ""; @@ -227,5 +227,76 @@ namespace Cryville.Crtr.Browsing { public Dictionary GetPresetPaths() { return localRes; } + + static Chart ConvertChartData(ChartData i) { + return new Chart { + endtime = ConvertBeatTime(i.endtime), + format = i.format, + groups = ConvertGroups(i.groups), + motions = ConvertMotions(i.motions), + ruleset = i.ruleset, + sigs = ConvertSignatures(i.sigs), + sounds = ConvertSounds(i.sounds), + time = ConvertBeatTime(i.time), + }; + } + static BeatTime? ConvertBeatTime(Extension.BeatTime? value) { + if (value == null) return null; + return new BeatTime(value.Value.b, value.Value.n, value.Value.d); + } + static List ConvertGroups(List l) { + return l.Select(i => new Chart.Group { + endtime = ConvertBeatTime(i.endtime), + motions = ConvertMotions(i.motions), + notes = ConvertNotes(i.notes), + time = ConvertBeatTime(i.time), + tracks = ConvertTracks(i.tracks), + }).ToList(); + } + static List ConvertJudges(List l) { + return l.Select(i => new Chart.Judge { + endtime = ConvertBeatTime(i.endtime), + name = i.name, + time = ConvertBeatTime(i.time), + }).ToList(); + } + static List ConvertMotions(List l) { + return l.Select(i => new Chart.Motion { + endtime = ConvertBeatTime(i.endtime), + motion = i.motion, + sumfix = i.sumfix, + time = ConvertBeatTime(i.time), + }).ToList(); + } + static List ConvertNotes(List l) { + return l.Select(i => new Chart.Note { + endtime = ConvertBeatTime(i.endtime), + judges = ConvertJudges(i.judges), + motions = ConvertMotions(i.motions), + time = ConvertBeatTime(i.time), + }).ToList(); + } + static List ConvertSignatures(List l) { + return l.Select(i => new Chart.Signature { + endtime = ConvertBeatTime(i.endtime), + tempo = i.tempo, + time = ConvertBeatTime(i.time), + }).ToList(); + } + static List ConvertSounds(List l) { + return l.Select(i => new Chart.Sound { + endtime = ConvertBeatTime(i.endtime), + id = i.id, + offset = i.offset, + time = ConvertBeatTime(i.time), + }).ToList(); + } + static List ConvertTracks(List l) { + return l.Select(i => new Chart.Track { + endtime = ConvertBeatTime(i.endtime), + motions = ConvertMotions(i.motions), + time = ConvertBeatTime(i.time), + }).ToList(); + } } } \ No newline at end of file