diff --git a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs index 0d8907d..d0a8533 100644 --- a/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs +++ b/Assets/Cryville/Crtr/Browsing/LegacyResourceManager.cs @@ -162,7 +162,7 @@ namespace Cryville.Crtr.Browsing { else if (res is RulesetResource) dest = new DirectoryInfo(_rootPath + "/rulesets/" + res.Name); else if (res is SkinResource) - dest = new DirectoryInfo(_rootPath + "/skins/" + res.Name); + dest = new DirectoryInfo(_rootPath + "/skins/" + (res as SkinResource).RulesetName + "/" + res.Name); else if (res is SongResource) dest = new DirectoryInfo(_rootPath + "/songs/" + res.Name); else { diff --git a/Assets/Cryville/Crtr/Browsing/ResourceConverter.cs b/Assets/Cryville/Crtr/Browsing/ResourceConverter.cs index 6280dd4..b7dda84 100644 --- a/Assets/Cryville/Crtr/Browsing/ResourceConverter.cs +++ b/Assets/Cryville/Crtr/Browsing/ResourceConverter.cs @@ -1,6 +1,7 @@ using Cryville.Common; using Newtonsoft.Json; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; namespace Cryville.Crtr.Browsing { @@ -27,12 +28,12 @@ namespace Cryville.Crtr.Browsing { public override bool Valid { get { return true; } } } public abstract class FileResource : Resource { - public FileResource(string name, FileInfo master, FileInfo[] attachments) : base(name) { + public FileResource(string name, FileInfo master) : base(name) { Master = master; - Attachments = attachments; + Attachments = new List(); } public FileInfo Master { get; private set; } - public FileInfo[] Attachments { get; private set; } + public List Attachments { get; private set; } public override bool Valid { get { if (!Master.Exists) return false; @@ -44,44 +45,35 @@ namespace Cryville.Crtr.Browsing { } } public class ChartResource : FileResource { - public ChartResource(string name, FileInfo master) : base(name, master, GetAttachments(master)) { } - static FileInfo[] GetAttachments(FileInfo master) { + public ChartResource(string name, FileInfo master) : base(name, master) { using (var reader = new StreamReader(master.FullName)) { var meta = JsonConvert.DeserializeObject(reader.ReadToEnd()); - var result = new List { - new FileInfo(Path.Combine(master.Directory.FullName, meta.data + ".json")), - }; - if (meta.cover != null) result.Add(new FileInfo(Path.Combine(master.Directory.FullName, meta.cover))); - return result.ToArray(); + Attachments.Add(new FileInfo(Path.Combine(master.Directory.FullName, meta.data + ".json"))); + if (meta.cover != null) Attachments.Add(new FileInfo(Path.Combine(master.Directory.FullName, meta.cover))); } } } public class SongResource : FileResource { - public SongResource(string name, FileInfo master) : base(name, master, new FileInfo[0]) { } + public SongResource(string name, FileInfo master) : base(name, master) { } } public class RulesetResource : FileResource { - public RulesetResource(string name, FileInfo master) : base(name, master, GetAttachments(master)) { } - static FileInfo[] GetAttachments(FileInfo master) { + public RulesetResource(string name, FileInfo master) : base(name, master) { using (var reader = new StreamReader(master.FullName)) { var meta = JsonConvert.DeserializeObject(reader.ReadToEnd()); - return new FileInfo[] { - new FileInfo(Path.Combine(master.Directory.FullName, meta.data + ".pdt")), - }; + Attachments.Add(new FileInfo(Path.Combine(master.Directory.FullName, meta.data + ".pdt"))); } } } public class SkinResource : FileResource { - public SkinResource(string name, FileInfo master) : base(name, master, GetAttachments(master)) { } - static FileInfo[] GetAttachments(FileInfo master) { + public string RulesetName { get; private set; } + public SkinResource(string name, FileInfo master) : base(name, master) { using (var reader = new StreamReader(master.FullName)) { var meta = JsonConvert.DeserializeObject(reader.ReadToEnd()); - var result = new List { - new FileInfo(Path.Combine(master.Directory.FullName, meta.data + ".pdt")), - }; + RulesetName = meta.ruleset; + Attachments.Add(new FileInfo(Path.Combine(master.Directory.FullName, meta.data + ".pdt"))); foreach (var frame in meta.frames) { - result.Add(new FileInfo(Path.Combine(master.Directory.FullName, frame))); + Attachments.Add(new FileInfo(Path.Combine(master.Directory.FullName, frame))); } - return result.ToArray(); } } }