Files
crtr/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs

61 lines
1.6 KiB
C#

using Cryville.Crtr.Browsing.Actions;
using Cryville.Crtr.Config.UI;
using System.Collections.Generic;
using UnityEngine;
namespace Cryville.Crtr.Browsing.UI {
public class ResourceBrowserMaster : MonoBehaviour {
[SerializeField]
ConfigPanelMaster m_configPanel;
[SerializeField]
Transform m_tabContainer;
[SerializeField]
GameObject m_tabPrefab;
[SerializeField]
PathedResourceBrowser m_mainBrowser;
[SerializeField]
SettingsBrowser m_settingsBrowser;
BrowserTab _currentTab;
readonly Dictionary<BrowserTab, ResourceBrowser> _tabs = new Dictionary<BrowserTab, ResourceBrowser>();
public ActionManager Actions { get; private set; }
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<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 bool Back() {
return true; // TODO
}
}
}