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] Transform m_browserContainer; [SerializeField] GameObject m_pathedBrowserPrefab; [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(AddPathedBrowserTab("Local", new LegacyResourceManager(Settings.Default.GameDataPath))); AddPathedBrowserTab("Files", new FileSystemResourceManager()); AddTab("Settings", m_settingsBrowser); } BrowserTab AddPathedBrowserTab(string name, IPathedResourceManager manager) { var browser = Instantiate(m_pathedBrowserPrefab, m_browserContainer, false).GetComponent(); browser.Init(this, manager); return AddTab(name, browser); } 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; browser.gameObject.SetActive(false); _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 } } }