Add support for directory items.
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user