Couple browser item to resource browser.

This commit is contained in:
2023-11-29 22:04:04 +08:00
parent 0f13d2d5fd
commit 700af29e43
5 changed files with 10 additions and 10 deletions

View File

@@ -2,11 +2,13 @@ using UnityEngine;
namespace Cryville.Crtr.Browsing.UI { namespace Cryville.Crtr.Browsing.UI {
internal abstract class BrowserItem : MonoBehaviour { internal abstract class BrowserItem : MonoBehaviour {
protected ResourceBrowser Browser { get; private set; }
protected int? Id { get; private set; } protected int? Id { get; private set; }
protected bool IsDir { get; private set; } protected bool IsDir { get; private set; }
protected IResourceMeta Meta { get; private set; } protected IResourceMeta Meta { get; private set; }
internal void Load(int id, bool isDir, IResourceMeta item, bool selected) { internal void Load(ResourceBrowser browser, int id, bool isDir, IResourceMeta item, bool selected) {
OnReset(); OnReset();
Browser = browser;
Id = id; Id = id;
IsDir = isDir; IsDir = isDir;
Meta = item; Meta = item;

View File

@@ -67,8 +67,7 @@ namespace Cryville.Crtr.Browsing.UI {
} }
public void OnClick() { public void OnClick() {
if (Id == null) return; if (Id == null) return;
var resourceBrowser = GetComponentInParent<PathedResourceBrowser>(); Browser.OnItemClicked(Id.Value);
resourceBrowser.OnObjectItemClicked(Id.Value);
} }
public void OnPointerClick(PointerEventData eventData) { public void OnPointerClick(PointerEventData eventData) {
OnClick(); OnClick();

View File

@@ -86,19 +86,15 @@ namespace Cryville.Crtr.Browsing.UI {
_items[id] = bi; _items[id] = bi;
try { try {
var item = _manager[id]; var item = _manager[id];
bi.Load(id, _manager.IsDirectory(id), item, _selectedItems.Contains(id)); bi.Load(this, id, _manager.IsDirectory(id), item, _selectedItems.Contains(id));
} }
catch (Exception) { catch (Exception) {
bi.Load(id, _manager.IsDirectory(id), null, _selectedItems.Contains(id)); bi.Load(this, id, _manager.IsDirectory(id), null, _selectedItems.Contains(id));
} }
return true; return true;
} }
public virtual void OnDirectoryItemClicked(int id) { public override void OnItemClicked(int id) {
_manager.OpenDirectory(id);
}
public void OnObjectItemClicked(int id) {
foreach (var item in _selectedItems) _items[item].OnDeselect(); foreach (var item in _selectedItems) _items[item].OnDeselect();
_selectedItems.Clear(); _selectedItems.Clear();
_items[id].OnSelect(); _items[id].OnSelect();

View File

@@ -12,6 +12,8 @@ namespace Cryville.Crtr.Browsing.UI {
Master = master; Master = master;
} }
public abstract void OnItemClicked(int index);
public abstract void InvokeAction(IResourceAction action); public abstract void InvokeAction(IResourceAction action);
} }
} }

View File

@@ -7,6 +7,7 @@ namespace Cryville.Crtr.Browsing.UI {
protected virtual void Awake() { protected virtual void Awake() {
GetComponent<PropertyMasterPanel>().Adapter = new DefaultPropertyMasterAdapter(Settings.Default); GetComponent<PropertyMasterPanel>().Adapter = new DefaultPropertyMasterAdapter(Settings.Default);
} }
public override void OnItemClicked(int index) { }
public override void InvokeAction(IResourceAction action) { } public override void InvokeAction(IResourceAction action) { }
} }
} }