Prevents duplicate ruleset config tabs.
This commit is contained in:
@@ -20,6 +20,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
internal GameObject m_configBrowserPrefab;
|
||||
|
||||
BrowserTab _currentTab;
|
||||
readonly Dictionary<int, BrowserTab> _tabMap = new Dictionary<int, BrowserTab>();
|
||||
readonly Dictionary<BrowserTab, ResourceBrowser> _tabs = new Dictionary<BrowserTab, ResourceBrowser>();
|
||||
|
||||
public ActionManager Actions { get; private set; }
|
||||
@@ -52,14 +53,25 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
tab.Closed += OnTabClosed;
|
||||
browser.gameObject.SetActive(false);
|
||||
_tabs.Add(tab, browser);
|
||||
_tabMap.Add(tab.GetHashCode(), tab);
|
||||
return tab;
|
||||
}
|
||||
T InitBrowser<T>(T browser) where T : ResourceBrowser { browser.Init(this); return browser; }
|
||||
|
||||
public void AddAndOpenTab(string name, ResourceBrowser browser) {
|
||||
public int AddAndOpenTab(string name, ResourceBrowser browser) {
|
||||
InitBrowser(browser);
|
||||
browser.transform.SetParent(m_browserContainer, false);
|
||||
OnTabClicked(AddTab(name, browser, _currentTab.transform.GetSiblingIndex() + 1, true));
|
||||
var tab = AddTab(name, browser, _currentTab.transform.GetSiblingIndex() + 1, true);
|
||||
OnTabClicked(tab);
|
||||
return tab.GetHashCode();
|
||||
}
|
||||
public bool TryOpenTab(int id) {
|
||||
BrowserTab tab;
|
||||
if (_tabMap.TryGetValue(id, out tab)) {
|
||||
OnTabClicked(tab);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void OnTabClicked(BrowserTab tab) {
|
||||
@@ -78,6 +90,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
Destroy(tab.gameObject);
|
||||
Destroy(_tabs[tab].gameObject);
|
||||
_tabs.Remove(tab);
|
||||
_tabMap.Remove(tab.GetHashCode());
|
||||
if (_currentTab == tab) _currentTab = null;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user