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 {
internal abstract class BrowserItem : MonoBehaviour {
public int? Id { get; private set; }
protected IResourceMeta meta;
internal void Load(int id, IResourceMeta item, bool selected) {
protected int? Id { get; private set; }
protected bool IsDir { get; private set; }
protected IResourceMeta Meta { get; private set; }
internal void Load(int id, bool isDir, IResourceMeta item, bool selected) {
OnReset();
Id = id;
meta = item;
IsDir = isDir;
Meta = item;
OnLoad(selected);
}
protected abstract void OnReset();

View File

@@ -43,7 +43,7 @@ namespace Cryville.Crtr.Browsing.UI {
m_icon.sprite = m_iconPlaceholder;
m_desc.text = string.Empty;
var basicProps = meta.EnumerateBasicProperties(true).GetEnumerator();
var basicProps = Meta.EnumerateBasicProperties(true).GetEnumerator();
if (basicProps.MoveNext()) {
m_title.text = basicProps.Current.Value.ToString();
if (basicProps.MoveNext()) {
@@ -54,9 +54,10 @@ namespace Cryville.Crtr.Browsing.UI {
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 (IsDir) _tweener.EnterState("Directory");
if (selected) _tweener.EnterState("Selected");
}
void DisplayCover(bool succeeded, Texture2D tex) {

View File

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

View File

@@ -90,6 +90,20 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
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
Attributes:
- Attribute: