66 lines
1.7 KiB
C#
66 lines
1.7 KiB
C#
using Cryville.Common;
|
|
using System;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace Cryville.Crtr.Browsing.UI {
|
|
public class DetailPanel : MonoBehaviour {
|
|
[SerializeField]
|
|
Sprite m_coverPlaceholder;
|
|
[SerializeField]
|
|
GameObject m_placeholder;
|
|
[SerializeField]
|
|
GameObject m_content;
|
|
[SerializeField]
|
|
Image m_cover;
|
|
[SerializeField]
|
|
TMP_Text m_title;
|
|
[SerializeField]
|
|
TMP_Text m_desc;
|
|
|
|
ResourceBrowserMaster _master;
|
|
|
|
int _id;
|
|
ChartDetail _data;
|
|
|
|
void Awake() {
|
|
_master = GetComponentInParent<ResourceBrowserMaster>();
|
|
}
|
|
void OnDestroy() {
|
|
if (_data.Cover != null) _data.Cover.Cancel();
|
|
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) {
|
|
_id = id;
|
|
m_placeholder.SetActive(false);
|
|
m_content.SetActive(true);
|
|
OnDestroy();
|
|
_data = data;
|
|
m_cover.sprite = m_coverPlaceholder;
|
|
if (data.Cover != null) data.Cover.Destination = DisplayCover;
|
|
var meta = data.Meta;
|
|
m_title.text = string.Format("{0}\n{1}", meta.song.name, meta.name);
|
|
m_desc.text = string.Format(
|
|
"Music artist: {0}\nCharter: {1}\nLength: {2}\nNote Count: {3}",
|
|
meta.song.author, meta.author,
|
|
TimeSpan.FromSeconds(meta.length).ToString(3), meta.note_count
|
|
);
|
|
}
|
|
private void DisplayCover(bool succeeded, Texture2D tex) {
|
|
if (succeeded) {
|
|
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);
|
|
}
|
|
public void OnConfig() {
|
|
_master.OpenConfig(_id, _data);
|
|
}
|
|
}
|
|
}
|