using Cryville.Crtr.Browsing.UI; using Cryville.Crtr.UI; using System; using System.Collections.Generic; using Object = UnityEngine.Object; namespace Cryville.Crtr.Browsing.Actions { internal class OpenConfigAction : ResourceAction { public override string Name { get { return "Config"; } } public override int Priority { get { return -50; } } static readonly Dictionary _rulesetTabs = new Dictionary(); public override bool CanInvoke(Uri uri, IChartDetail resource) { return true; } public override void Invoke(Uri uri, IChartDetail resource) { var master = ResourceBrowserMaster.Instance; var ruleset = resource.RulesetId; int tabId; if (_rulesetTabs.TryGetValue(ruleset, out tabId) && master.TryOpenTab(tabId)) return; var browser = Object.Instantiate(master.m_configBrowserPrefab).GetComponent(); try { 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; } _rulesetTabs[ruleset] = master.AddAndOpenTab(string.Format("Config: {0}", ruleset), browser); } } }