Add support for directory items.

This commit is contained in:
2023-11-29 21:57:58 +08:00
parent 820aaeff85
commit 0f13d2d5fd
4 changed files with 25 additions and 8 deletions

View File

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

View File

@@ -43,7 +43,7 @@ namespace Cryville.Crtr.Browsing.UI {
m_icon.sprite = m_iconPlaceholder; m_icon.sprite = m_iconPlaceholder;
m_desc.text = string.Empty; m_desc.text = string.Empty;
var basicProps = meta.EnumerateBasicProperties(true).GetEnumerator(); var basicProps = Meta.EnumerateBasicProperties(true).GetEnumerator();
if (basicProps.MoveNext()) { if (basicProps.MoveNext()) {
m_title.text = basicProps.Current.Value.ToString(); m_title.text = basicProps.Current.Value.ToString();
if (basicProps.MoveNext()) { if (basicProps.MoveNext()) {
@@ -54,9 +54,10 @@ namespace Cryville.Crtr.Browsing.UI {
m_title.text = "<color=#ff0000>Invalid resource</color>"; m_title.text = "<color=#ff0000>Invalid resource</color>";
} }
_cover = meta.EnumerateProperties<AsyncDelivery<Texture2D>>().FirstOrDefault().Value; _cover = Meta.EnumerateProperties<AsyncDelivery<Texture2D>>().FirstOrDefault().Value;
if (_cover != null) _cover.Destination = DisplayCover; if (_cover != null) _cover.Destination = DisplayCover;
if (IsDir) _tweener.EnterState("Directory");
if (selected) _tweener.EnterState("Selected"); if (selected) _tweener.EnterState("Selected");
} }
void DisplayCover(bool succeeded, Texture2D tex) { void DisplayCover(bool succeeded, Texture2D tex) {

View File

@@ -86,10 +86,10 @@ namespace Cryville.Crtr.Browsing.UI {
_items[id] = bi; _items[id] = bi;
try { try {
var item = _manager[id]; var item = _manager[id];
bi.Load(id, item, _selectedItems.Contains(id)); bi.Load(id, _manager.IsDirectory(id), item, _selectedItems.Contains(id));
} }
catch (Exception) { catch (Exception) {
bi.Load(id, null, _selectedItems.Contains(id)); bi.Load(id, _manager.IsDirectory(id), null, _selectedItems.Contains(id));
} }
return true; return true;
} }

View File

@@ -90,6 +90,20 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_states: m_states:
- Name: Directory
Attributes:
- Attribute:
Component: {fileID: 2616337343185291959}
Attribute: color.r
Value: 0.4
- Attribute:
Component: {fileID: 2616337343185291959}
Attribute: color.g
Value: 0.6
- Attribute:
Component: {fileID: 2616337343185291959}
Attribute: color.b
Value: 1
- Name: Selected - Name: Selected
Attributes: Attributes:
- Attribute: - Attribute: