From aa84fb8544207eb733f6931d3f90c852f4a28893 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Tue, 19 Dec 2023 16:48:13 +0800 Subject: [PATCH] Implement legacy skin resource browser. --- .../Crtr/Browsing/Legacy/LegacySkinDetail.cs | 22 +++++++++++++++ .../Browsing/Legacy/LegacySkinDetail.cs.meta | 11 ++++++++ .../Legacy/LegacySkinResourceManager.cs | 27 +++++++++++++++++++ .../Legacy/LegacySkinResourceManager.cs.meta | 11 ++++++++ .../Crtr/Browsing/UI/ResourceBrowserMaster.cs | 3 ++- 5 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs create mode 100644 Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs.meta create mode 100644 Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs create mode 100644 Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs.meta diff --git a/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs new file mode 100644 index 0000000..584b666 --- /dev/null +++ b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs @@ -0,0 +1,22 @@ +using Cryville.Crtr.Skin; +using System.Collections.Generic; + +namespace Cryville.Crtr.Browsing.Legacy { + internal class LegacySkinDetail : IResourceMeta { + public string Name { get; internal set; } + public SkinDefinition Meta { get; internal set; } + + public IEnumerable Properties { + get { + if (Meta == null) { + if (Name != null) + yield return new MetaProperty("Name", Name); + yield break; + } + yield return new MetaProperty("Name", Meta.name); + yield return new MetaProperty("Author", Meta.author); + yield return new MetaProperty("Ruleset", Meta.ruleset); + } + } + } +} diff --git a/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs.meta b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs.meta new file mode 100644 index 0000000..afbdc3d --- /dev/null +++ b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinDetail.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ddcc342c96a91942a7807625bdfd227 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs new file mode 100644 index 0000000..3bcdd08 --- /dev/null +++ b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs @@ -0,0 +1,27 @@ +using Cryville.Crtr.Skin; +using Newtonsoft.Json; +using System.IO; + +namespace Cryville.Crtr.Browsing.Legacy { + internal class LegacySkinResourceManager : LegacyResourceManager { + protected override string Extension { get { return ".umgs"; } } + + public LegacySkinResourceManager(string rootPath) : base(rootPath) { } + + protected override string GetSubRootPath(string rootPath) { + return Path.Combine(rootPath, "skins"); + } + protected override LegacySkinDetail GetMeta(DirectoryInfo dir) { + SkinDefinition meta = null; + var metaFile = new FileInfo(Path.Combine(dir.FullName, Extension)); + if (metaFile.Exists) { + using (var reader = new StreamReader(metaFile.FullName)) { + meta = JsonConvert.DeserializeObject(reader.ReadToEnd()); + } + return new LegacySkinDetail { Meta = meta }; + } + else + return new LegacySkinDetail { Name = dir.Name }; + } + } +} diff --git a/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs.meta b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs.meta new file mode 100644 index 0000000..73dc72b --- /dev/null +++ b/Assets/Cryville/Crtr/Browsing/Legacy/LegacySkinResourceManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 323eaa68e1ba1f04498393c41a85a3ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs b/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs index 2bdf016..2a62fa7 100644 --- a/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs +++ b/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs @@ -34,7 +34,8 @@ namespace Cryville.Crtr.Browsing.UI { Actions.Register(new PlayChartAction()); Actions.Register(new OpenConfigAction()); - OnTabClicked(AddPathedBrowserTab("Local", new LegacyResourceManager(Settings.Default.GameDataPath))); + OnTabClicked(AddPathedBrowserTab("Local Charts", new LegacyChartResourceManager(Settings.Default.GameDataPath))); + AddPathedBrowserTab("Local Skins", new LegacySkinResourceManager(Settings.Default.GameDataPath)); AddPathedBrowserTab("Files", new FileSystemResourceManager()); AddTab("Settings", InitBrowser(m_settingsBrowser), _tabs.Count, false); }