Implement browser tabs.

This commit is contained in:
2023-11-11 11:54:52 +08:00
parent c05b771425
commit 166478e4bb
5 changed files with 64 additions and 588 deletions

View File

@@ -8,22 +8,48 @@ using UnityEngine.UI;
namespace Cryville.Crtr.Browsing.UI {
public class ResourceBrowserMaster : MonoBehaviour {
[SerializeField]
private Button m_playButton;
Button m_playButton;
[SerializeField]
private Button m_configButton;
Button m_configButton;
[SerializeField]
private ConfigPanelMaster m_configPanel;
ConfigPanelMaster m_configPanel;
[SerializeField]
private PathedResourceBrowser m_mainBrowser;
Transform m_tabContainer;
[SerializeField]
private DetailPanel m_detailPanel;
GameObject m_tabPrefab;
[SerializeField]
PathedResourceBrowser m_mainBrowser;
[SerializeField]
DetailPanel m_detailPanel;
readonly List<ResourceBrowser> _units = new List<ResourceBrowser>();
BrowserTab _currentTab;
readonly Dictionary<BrowserTab, ResourceBrowser> _tabs = new Dictionary<BrowserTab, ResourceBrowser>();
void Awake() {
m_mainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath);
_units.Add(m_mainBrowser);
// _units.Add(m_detailPanel);
OnTabClicked(AddTab("Local", m_mainBrowser));
}
BrowserTab AddTab(string name, ResourceBrowser browser) {
var tab = Instantiate(m_tabPrefab, m_tabContainer, false).GetComponent<BrowserTab>();
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 void ShowDetail(int id, ChartDetail detail) {