Restructure resource browsers.
This commit is contained in:
@@ -19,26 +19,16 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
TMP_Text m_desc;
|
TMP_Text m_desc;
|
||||||
|
|
||||||
ResourceBrowserMaster _master;
|
|
||||||
|
|
||||||
int _id;
|
|
||||||
ChartDetail _data;
|
ChartDetail _data;
|
||||||
|
|
||||||
void Awake() {
|
|
||||||
_master = GetComponentInParent<ResourceBrowserMaster>();
|
|
||||||
}
|
|
||||||
void OnDestroy() {
|
void OnDestroy() {
|
||||||
if (_data.Cover != null) _data.Cover.Cancel();
|
DestroyDynamicResources();
|
||||||
if (m_cover.sprite != null && m_cover.sprite != m_coverPlaceholder) {
|
|
||||||
Destroy(m_cover.sprite.texture);
|
|
||||||
Destroy(m_cover.sprite);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
public void Load(int id, ChartDetail data) {
|
public void Load(ChartDetail data) {
|
||||||
_id = id;
|
|
||||||
m_placeholder.SetActive(false);
|
m_placeholder.SetActive(false);
|
||||||
m_content.SetActive(true);
|
m_content.SetActive(true);
|
||||||
OnDestroy();
|
DestroyDynamicResources();
|
||||||
_data = data;
|
_data = data;
|
||||||
m_cover.sprite = m_coverPlaceholder;
|
m_cover.sprite = m_coverPlaceholder;
|
||||||
if (data.Cover != null) data.Cover.Destination = DisplayCover;
|
if (data.Cover != null) data.Cover.Destination = DisplayCover;
|
||||||
@@ -56,16 +46,18 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
m_desc.text = string.Empty;
|
m_desc.text = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void DisplayCover(bool succeeded, Texture2D tex) {
|
void DisplayCover(bool succeeded, Texture2D tex) {
|
||||||
if (succeeded) {
|
if (succeeded) {
|
||||||
m_cover.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero, 160, 0, SpriteMeshType.FullRect);
|
m_cover.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero, 160, 0, SpriteMeshType.FullRect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void OnPlay() {
|
|
||||||
_master.Open(_id, _data);
|
void DestroyDynamicResources() {
|
||||||
}
|
if (_data.Cover != null) _data.Cover.Cancel();
|
||||||
public void OnConfig() {
|
if (m_cover.sprite != null && m_cover.sprite != m_coverPlaceholder) {
|
||||||
_master.OpenConfig(_id, _data);
|
Destroy(m_cover.sprite.texture);
|
||||||
|
Destroy(m_cover.sprite);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,11 @@ using Cryville.Common.Unity.UI;
|
|||||||
using Cryville.Crtr.UI;
|
using Cryville.Crtr.UI;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace Cryville.Crtr.Browsing.UI {
|
namespace Cryville.Crtr.Browsing.UI {
|
||||||
public class PathedResourceBrowser : ResourceBrowser {
|
public class PathedResourceBrowser : ResourceBrowser {
|
||||||
@@ -14,7 +18,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
GameObject m_actionBar;
|
GameObject m_actionBar;
|
||||||
|
|
||||||
public IPathedResourceManager<ChartDetail> ResourceManager;
|
IPathedResourceManager<ChartDetail> _manager;
|
||||||
|
|
||||||
readonly HashSet<int> _selectedItems = new HashSet<int>();
|
readonly HashSet<int> _selectedItems = new HashSet<int>();
|
||||||
readonly Dictionary<int, BrowserItem> _items = new Dictionary<int, BrowserItem>();
|
readonly Dictionary<int, BrowserItem> _items = new Dictionary<int, BrowserItem>();
|
||||||
@@ -24,36 +28,48 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
|
|
||||||
protected virtual void Start() {
|
protected virtual void Start() {
|
||||||
m_itemContainer.LoadItem = LoadItem;
|
m_itemContainer.LoadItem = LoadItem;
|
||||||
ResourceManager.ItemChanged += OnItemChanged;
|
|
||||||
ResourceManager.ChangeDirectory(new string[] { "" });
|
|
||||||
InitDialog();
|
InitDialog();
|
||||||
}
|
}
|
||||||
|
void OnDestroy() {
|
||||||
|
UnregisterManager();
|
||||||
|
}
|
||||||
|
void UnregisterManager() {
|
||||||
|
_manager.ItemChanged -= OnItemChanged;
|
||||||
|
_manager.DirectoryChanged -= OnDirectoryChanged;
|
||||||
|
}
|
||||||
|
|
||||||
void OnEnable() {
|
void OnEnable() {
|
||||||
ResourceManager.Activate();
|
_manager.Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDisable() {
|
void OnDisable() {
|
||||||
ResourceManager.Deactivate();
|
_manager.Deactivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Obsolete]
|
public void Init(ResourceBrowserMaster master, IPathedResourceManager<ChartDetail> manager) {
|
||||||
protected void InitDialog() {
|
if (_manager != null) {
|
||||||
_dialog = Instantiate(Resources.Load<GameObject>("Common/FileDialog")).GetComponent<FileDialog>();
|
UnregisterManager();
|
||||||
_dialog.gameObject.SetActive(false);
|
}
|
||||||
_dialog.Filter = ResourceManager.GetSupportedFormats();
|
Init(master);
|
||||||
_dialog.PresetPaths = ResourceManager.GetPresetPaths();
|
_manager = manager;
|
||||||
_dialog.OnClose += OnAddDialogClosed;
|
_manager.ItemChanged += OnItemChanged;
|
||||||
|
_manager.DirectoryChanged += OnDirectoryChanged;
|
||||||
|
|
||||||
|
OnItemChanged();
|
||||||
|
OnDirectoryChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _itemChanged;
|
bool _itemChanged;
|
||||||
void OnItemChanged() { _itemChanged = true; }
|
void OnItemChanged() {
|
||||||
|
_itemChanged = true;
|
||||||
|
}
|
||||||
|
void OnDirectoryChanged() {
|
||||||
|
}
|
||||||
void Update() {
|
void Update() {
|
||||||
if (_itemChanged) {
|
if (_itemChanged) {
|
||||||
_itemChanged = false;
|
_itemChanged = false;
|
||||||
_selectedItems.Clear();
|
_selectedItems.Clear();
|
||||||
_items.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>();
|
var bi = obj.GetComponent<BrowserItem>();
|
||||||
_items[id] = bi;
|
_items[id] = bi;
|
||||||
try {
|
try {
|
||||||
var item = ResourceManager[id];
|
var item = _manager[id];
|
||||||
bi.Load(id, item, _selectedItems.Contains(id));
|
bi.Load(id, item, _selectedItems.Contains(id));
|
||||||
}
|
}
|
||||||
catch (Exception) {
|
catch (Exception) {
|
||||||
@@ -71,7 +87,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public virtual void OnDirectoryItemClicked(int id) {
|
public virtual void OnDirectoryItemClicked(int id) {
|
||||||
ResourceManager.OpenDirectory(id);
|
_manager.OpenDirectory(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnObjectItemClicked(int id) {
|
public void OnObjectItemClicked(int id) {
|
||||||
@@ -79,12 +95,12 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
_selectedItems.Clear();
|
_selectedItems.Clear();
|
||||||
_items[id].OnSelect();
|
_items[id].OnSelect();
|
||||||
_selectedItems.Add(id);
|
_selectedItems.Add(id);
|
||||||
m_detailPanel.Load(id, ResourceManager[id]);
|
m_detailPanel.Load(_manager[id]);
|
||||||
m_actionBar.SetActive(true);
|
m_actionBar.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnPathClicked(int index) {
|
public void OnPathClicked(int index) {
|
||||||
ResourceManager.ReturnToDirectory(index);
|
_manager.ReturnToDirectory(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Obsolete]
|
[Obsolete]
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
public Sprite Icon { get { return m_icon; } }
|
public Sprite Icon { get { return m_icon; } }
|
||||||
|
|
||||||
protected ResourceBrowserMaster Master { get; private set; }
|
protected ResourceBrowserMaster Master { get; private set; }
|
||||||
protected virtual void Awake() {
|
protected void Init(ResourceBrowserMaster master) {
|
||||||
Master = GetComponentInParent<ResourceBrowserMaster>();
|
Master = master;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ namespace Cryville.Crtr.Browsing.UI {
|
|||||||
void Awake() {
|
void Awake() {
|
||||||
m_mainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath);
|
m_mainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath);
|
||||||
OnTabClicked(AddTab("Local", m_mainBrowser));
|
OnTabClicked(AddTab("Local", m_mainBrowser));
|
||||||
|
m_mainBrowser.Init(this, new LegacyResourceManager(Settings.Default.GameDataPath));
|
||||||
|
|
||||||
AddTab("Settings", m_settingsBrowser);
|
AddTab("Settings", m_settingsBrowser);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ using Cryville.Crtr.Config.UI;
|
|||||||
|
|
||||||
namespace Cryville.Crtr.Browsing.UI {
|
namespace Cryville.Crtr.Browsing.UI {
|
||||||
internal class SettingsBrowser : ResourceBrowser {
|
internal class SettingsBrowser : ResourceBrowser {
|
||||||
protected override void Awake() {
|
protected virtual void Awake() {
|
||||||
base.Awake();
|
|
||||||
GetComponent<PropertyMasterPanel>().Adapter = new DefaultPropertyMasterAdapter(Settings.Default);
|
GetComponent<PropertyMasterPanel>().Adapter = new DefaultPropertyMasterAdapter(Settings.Default);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user