Prevents duplicate ruleset config tabs.

This commit is contained in:
2023-12-02 00:28:07 +08:00
parent c4e15fbbfd
commit 01b162883d
2 changed files with 25 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
using Cryville.Crtr.Browsing.UI;
using Cryville.Crtr.UI;
using System;
using System.Collections.Generic;
using Object = UnityEngine.Object;
namespace Cryville.Crtr.Browsing.Actions {
@@ -9,18 +10,25 @@ namespace Cryville.Crtr.Browsing.Actions {
public override int Priority { get { return -50; } }
static Dictionary<string, int> _rulesetTabs = new Dictionary<string, int>();
public override void Invoke(Uri uri, ChartDetail resource) {
var master = ResourceBrowserMaster.Instance;
var ruleset = resource.Meta.ruleset;
int tabId;
if (_rulesetTabs.TryGetValue(ruleset, out tabId) && master.TryOpenTab(tabId))
return;
var browser = Object.Instantiate(master.m_configBrowserPrefab).GetComponent<RulesetConfigBrowser>();
try {
browser.Load(resource.Meta.ruleset);
browser.Load(ruleset);
}
catch (Exception ex) {
Dialog.Show(null, ex.Message);
Game.MainLogger.Log(4, "Config", "An error occurred while loading the config: {0}", ex);
Object.Destroy(browser.gameObject);
return;
}
master.AddAndOpenTab(string.Format("Config: {0}", resource.Meta.ruleset), browser);
_rulesetTabs[ruleset] = master.AddAndOpenTab(string.Format("Config: {0}", ruleset), browser);
}
}
}