Restructure resource browsers.
This commit is contained in:
@@ -3,7 +3,11 @@ using Cryville.Common.Unity.UI;
|
||||
using Cryville.Crtr.UI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Cryville.Crtr.Browsing.UI {
|
||||
public class PathedResourceBrowser : ResourceBrowser {
|
||||
@@ -14,7 +18,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
[SerializeField]
|
||||
GameObject m_actionBar;
|
||||
|
||||
public IPathedResourceManager<ChartDetail> ResourceManager;
|
||||
IPathedResourceManager<ChartDetail> _manager;
|
||||
|
||||
readonly HashSet<int> _selectedItems = new HashSet<int>();
|
||||
readonly Dictionary<int, BrowserItem> _items = new Dictionary<int, BrowserItem>();
|
||||
@@ -24,36 +28,48 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
|
||||
protected virtual void Start() {
|
||||
m_itemContainer.LoadItem = LoadItem;
|
||||
ResourceManager.ItemChanged += OnItemChanged;
|
||||
ResourceManager.ChangeDirectory(new string[] { "" });
|
||||
InitDialog();
|
||||
}
|
||||
void OnDestroy() {
|
||||
UnregisterManager();
|
||||
}
|
||||
void UnregisterManager() {
|
||||
_manager.ItemChanged -= OnItemChanged;
|
||||
_manager.DirectoryChanged -= OnDirectoryChanged;
|
||||
}
|
||||
|
||||
void OnEnable() {
|
||||
ResourceManager.Activate();
|
||||
_manager.Activate();
|
||||
}
|
||||
|
||||
void OnDisable() {
|
||||
ResourceManager.Deactivate();
|
||||
_manager.Deactivate();
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
protected void InitDialog() {
|
||||
_dialog = Instantiate(Resources.Load<GameObject>("Common/FileDialog")).GetComponent<FileDialog>();
|
||||
_dialog.gameObject.SetActive(false);
|
||||
_dialog.Filter = ResourceManager.GetSupportedFormats();
|
||||
_dialog.PresetPaths = ResourceManager.GetPresetPaths();
|
||||
_dialog.OnClose += OnAddDialogClosed;
|
||||
public void Init(ResourceBrowserMaster master, IPathedResourceManager<ChartDetail> manager) {
|
||||
if (_manager != null) {
|
||||
UnregisterManager();
|
||||
}
|
||||
Init(master);
|
||||
_manager = manager;
|
||||
_manager.ItemChanged += OnItemChanged;
|
||||
_manager.DirectoryChanged += OnDirectoryChanged;
|
||||
|
||||
OnItemChanged();
|
||||
OnDirectoryChanged();
|
||||
}
|
||||
|
||||
bool _itemChanged;
|
||||
void OnItemChanged() { _itemChanged = true; }
|
||||
void OnItemChanged() {
|
||||
_itemChanged = true;
|
||||
}
|
||||
void OnDirectoryChanged() {
|
||||
}
|
||||
void Update() {
|
||||
if (_itemChanged) {
|
||||
_itemChanged = false;
|
||||
_selectedItems.Clear();
|
||||
_items.Clear();
|
||||
m_itemContainer.ItemCount = ResourceManager.Count;
|
||||
m_itemContainer.ItemCount = _manager.Count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +77,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
var bi = obj.GetComponent<BrowserItem>();
|
||||
_items[id] = bi;
|
||||
try {
|
||||
var item = ResourceManager[id];
|
||||
var item = _manager[id];
|
||||
bi.Load(id, item, _selectedItems.Contains(id));
|
||||
}
|
||||
catch (Exception) {
|
||||
@@ -71,7 +87,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
}
|
||||
|
||||
public virtual void OnDirectoryItemClicked(int id) {
|
||||
ResourceManager.OpenDirectory(id);
|
||||
_manager.OpenDirectory(id);
|
||||
}
|
||||
|
||||
public void OnObjectItemClicked(int id) {
|
||||
@@ -79,12 +95,12 @@ namespace Cryville.Crtr.Browsing.UI {
|
||||
_selectedItems.Clear();
|
||||
_items[id].OnSelect();
|
||||
_selectedItems.Add(id);
|
||||
m_detailPanel.Load(id, ResourceManager[id]);
|
||||
m_detailPanel.Load(_manager[id]);
|
||||
m_actionBar.SetActive(true);
|
||||
}
|
||||
|
||||
public void OnPathClicked(int index) {
|
||||
ResourceManager.ReturnToDirectory(index);
|
||||
_manager.ReturnToDirectory(index);
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
|
Reference in New Issue
Block a user