From f04d0ec299bad6e71f3b434eb6f2e4f953d591b2 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Wed, 16 Nov 2022 11:45:28 +0800 Subject: [PATCH] Loads ruleset config before worker. Implement skin option of ruleset config. --- .../Crtr/Browsing/ResourceBrowserMaster.cs | 1 - Assets/Cryville/Crtr/ChartPlayer.cs | 22 +++++++++---------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Assets/Cryville/Crtr/Browsing/ResourceBrowserMaster.cs b/Assets/Cryville/Crtr/Browsing/ResourceBrowserMaster.cs index 7eeec19..73ac0fd 100644 --- a/Assets/Cryville/Crtr/Browsing/ResourceBrowserMaster.cs +++ b/Assets/Cryville/Crtr/Browsing/ResourceBrowserMaster.cs @@ -87,7 +87,6 @@ namespace Cryville.Crtr.Browsing { void SetDataSettings(int id, ChartDetail detail) { Settings.Default.LoadRuleset = detail.Meta.ruleset + "/.umgr"; Settings.Default.LoadRulesetConfig = detail.Meta.ruleset + ".json"; - Settings.Default.LoadSkin = detail.Meta.ruleset + "/Old KeyUI/.umgs"; Settings.Default.LoadChart = MainBrowser.ResourceManager.GetItemPath(id); } } diff --git a/Assets/Cryville/Crtr/ChartPlayer.cs b/Assets/Cryville/Crtr/ChartPlayer.cs index 38e181c..0d9310a 100644 --- a/Assets/Cryville/Crtr/ChartPlayer.cs +++ b/Assets/Cryville/Crtr/ChartPlayer.cs @@ -52,6 +52,7 @@ namespace Cryville.Crtr { public static Rect hitRect; public static Plane[] frustumPlanes; + RulesetConfig _rscfg; static bool disableGC = true; static float clippingDist = 1f; static float renderDist = 6f; @@ -338,14 +339,19 @@ namespace Cryville.Crtr { FileInfo rulesetConfigFile = new FileInfo( Game.GameDataPath + "/config/rulesets/" + Settings.Default.LoadRulesetConfig ); + if (!rulesetConfigFile.Exists) throw new FileNotFoundException("Ruleset config not found\nPlease open the config to generate"); + using (StreamReader cfgreader = new StreamReader(rulesetConfigFile.FullName, Encoding.UTF8)) { + _rscfg = JsonConvert.DeserializeObject(cfgreader.ReadToEnd(), new JsonSerializerSettings() { + MissingMemberHandling = MissingMemberHandling.Error + }); + } FileInfo skinFile = new FileInfo( - Game.GameDataPath + "/skins/" + Settings.Default.LoadSkin + string.Format("{0}/skins/{1}/{2}/.umgs", Game.GameDataPath, rulesetFile.Directory.Name, _rscfg.generic.Skin) ); loadThread = new Thread(new ParameterizedThreadStart(Load)); loadThread.Start(new LoadInfo() { chartFile = chartFile, rulesetFile = rulesetFile, - rulesetConfigFile = rulesetConfigFile, skinFile = skinFile, }); @@ -435,7 +441,6 @@ namespace Cryville.Crtr { struct LoadInfo { public FileInfo chartFile; public FileInfo rulesetFile; - public FileInfo rulesetConfigFile; public FileInfo skinFile; } @@ -473,7 +478,7 @@ namespace Cryville.Crtr { etor = new PdtEvaluator(); - LoadRuleset(info.rulesetFile, info.rulesetConfigFile); + LoadRuleset(info.rulesetFile); Logger.Log("main", 0, "Load/WorkerThread", "Applying ruleset (iteration 1)"); pruleset.PrePatch(chart); @@ -532,8 +537,7 @@ namespace Cryville.Crtr { } } - RulesetConfig _rscfg; - void LoadRuleset(FileInfo file, FileInfo cfgfile) { + void LoadRuleset(FileInfo file) { DirectoryInfo dir = file.Directory; Logger.Log("main", 0, "Load/WorkerThread", "Loading ruleset: {0}", file); using (StreamReader reader = new StreamReader(file.FullName, Encoding.UTF8)) { @@ -543,12 +547,6 @@ namespace Cryville.Crtr { if (ruleset.format != 1) throw new FormatException("Invalid ruleset file version"); ruleset.LoadPdt(dir); pruleset = ruleset.Root; - if (!cfgfile.Exists) throw new FileNotFoundException("Ruleset config not found\nPlease open the config to generate"); - using (StreamReader cfgreader = new StreamReader(cfgfile.FullName, Encoding.UTF8)) { - _rscfg = JsonConvert.DeserializeObject(cfgreader.ReadToEnd(), new JsonSerializerSettings() { - MissingMemberHandling = MissingMemberHandling.Error - }); - } pruleset.Optimize(etor); } }