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(); } 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); } } }