using Cryville.Common.Unity; using Cryville.Crtr.Browsing.Actions; using Cryville.Crtr.Config.UI; using System.Collections.Generic; using UnityEngine; namespace Cryville.Crtr.Browsing.UI { public class ResourceBrowserMaster : SingletonBehaviour { [SerializeField] ConfigPanelMaster m_configPanel; [SerializeField] Transform m_tabContainer; [SerializeField] GameObject m_tabPrefab; [SerializeField] PathedResourceBrowser m_mainBrowser; [SerializeField] SettingsBrowser m_settingsBrowser; BrowserTab _currentTab; readonly Dictionary _tabs = new Dictionary(); public ActionManager Actions { get; private set; } protected override void Awake() { Actions = new ActionManager(); Actions.Register(new PlayChartAction()); OnTabClicked(AddTab("Local", m_mainBrowser)); m_mainBrowser.Init(this, new LegacyResourceManager(Settings.Default.GameDataPath)); AddTab("Settings", m_settingsBrowser); } BrowserTab AddTab(string name, ResourceBrowser browser) { var tab = Instantiate(m_tabPrefab, m_tabContainer, false).GetComponent(); tab.Icon = browser.Icon; tab.Text = name; tab.Clicked += OnTabClicked; _tabs.Add(tab, browser); return tab; } void OnTabClicked(BrowserTab tab) { if (tab == _currentTab) return; if (_currentTab != null) { _currentTab.Selected = false; _tabs[_currentTab].gameObject.SetActive(false); } _currentTab = tab; if (_currentTab != null) { _currentTab.Selected = true; _tabs[_currentTab].gameObject.SetActive(true); } } public bool Back() { return true; // TODO } } }