Clean up hardcoded UI paths.

This commit is contained in:
2023-11-10 14:45:23 +08:00
parent 8089e724f9
commit b50f771d6e
5 changed files with 47 additions and 75 deletions

View File

@@ -10,21 +10,21 @@ namespace Cryville.Crtr.Browsing.UI {
#pragma warning restore IDE0044 #pragma warning restore IDE0044
private bool _dir; private bool _dir;
private Image _icon; [SerializeField]
private TMP_Text _title; Image m_icon;
private TMP_Text _desc; [SerializeField]
TMP_Text m_title;
[SerializeField]
TMP_Text m_desc;
#pragma warning disable IDE0051 #pragma warning disable IDE0051
void Awake() { void Awake() {
_icon = transform.Find("__content__/Icon").GetComponent<Image>();
_title = transform.Find("__content__/Texts/Title/__text__").GetComponent<TMP_Text>();
_desc = transform.Find("__content__/Texts/Description/__text__").GetComponent<TMP_Text>();
} }
void OnDestroy() { void OnDestroy() {
if (meta.Icon != null) meta.Icon.Cancel(); if (meta.Icon != null) meta.Icon.Cancel();
if (_icon.sprite != null && _icon.sprite != m_iconPlaceholder) { if (m_icon.sprite != null && m_icon.sprite != m_iconPlaceholder) {
Texture2D.Destroy(_icon.sprite.texture); Destroy(m_icon.sprite.texture);
Sprite.Destroy(_icon.sprite); Destroy(m_icon.sprite);
} }
} }
#pragma warning restore IDE0051 #pragma warning restore IDE0051
@@ -33,14 +33,14 @@ namespace Cryville.Crtr.Browsing.UI {
OnDestroy(); OnDestroy();
base.Load(id, item); base.Load(id, item);
_dir = meta.IsDirectory; _dir = meta.IsDirectory;
_icon.sprite = m_iconPlaceholder; m_icon.sprite = m_iconPlaceholder;
if (meta.Icon != null) meta.Icon.Destination = DisplayCover; if (meta.Icon != null) meta.Icon.Destination = DisplayCover;
_title.text = meta.Name; m_title.text = meta.Name;
_desc.text = string.Format("{0}\n{1}", meta.DescriptionMain, meta.DescriptionSub); m_desc.text = string.Format("{0}\n{1}", meta.DescriptionMain, meta.DescriptionSub);
} }
private void DisplayCover(bool succeeded, Texture2D tex) { private void DisplayCover(bool succeeded, Texture2D tex) {
if (succeeded) { if (succeeded) {
_icon.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero, 160, 0, SpriteMeshType.FullRect); m_icon.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero, 160, 0, SpriteMeshType.FullRect);
} }
} }
public void OnClick() { public void OnClick() {

View File

@@ -6,47 +6,42 @@ using UnityEngine.UI;
namespace Cryville.Crtr.Browsing.UI { namespace Cryville.Crtr.Browsing.UI {
public class DetailPanel : ResourceBrowserUnit { public class DetailPanel : ResourceBrowserUnit {
#pragma warning disable IDE0044
[SerializeField] [SerializeField]
private Sprite m_coverPlaceholder; Sprite m_coverPlaceholder;
#pragma warning restore IDE0044 [SerializeField]
GameObject m_placeholder;
[SerializeField]
GameObject m_content;
[SerializeField]
Image m_cover;
[SerializeField]
TMP_Text m_title;
[SerializeField]
TMP_Text m_desc;
int _id; int _id;
ChartDetail _data; ChartDetail _data;
GameObject _placeholder;
GameObject _outerContent;
Transform _content;
Image _cover;
TMP_Text _title;
TMP_Text _desc;
protected override void Awake() { protected override void Awake() {
base.Awake();
_placeholder = transform.Find("__placeholder__").gameObject;
_outerContent = transform.Find("__content__").gameObject;
_content = _outerContent.transform.Find("__content__");
_cover = _content.Find("Cover").GetComponent<Image>();
_title = _content.Find("Texts/Title").GetComponent<TMP_Text>();
_desc = _content.Find("Texts/Description").GetComponent<TMP_Text>();
} }
void OnDestroy() { void OnDestroy() {
if (_data.Cover != null) _data.Cover.Cancel(); if (_data.Cover != null) _data.Cover.Cancel();
if (_cover.sprite != null && _cover.sprite != m_coverPlaceholder) { if (m_cover.sprite != null && m_cover.sprite != m_coverPlaceholder) {
Texture2D.Destroy(_cover.sprite.texture); Destroy(m_cover.sprite.texture);
Sprite.Destroy(_cover.sprite); Destroy(m_cover.sprite);
} }
} }
public void Load(int id, ChartDetail data) { public void Load(int id, ChartDetail data) {
_id = id; _id = id;
_placeholder.SetActive(false); m_placeholder.SetActive(false);
_outerContent.SetActive(true); m_content.SetActive(true);
OnDestroy(); OnDestroy();
_data = data; _data = data;
_cover.sprite = m_coverPlaceholder; m_cover.sprite = m_coverPlaceholder;
if (data.Cover != null) data.Cover.Destination = DisplayCover; if (data.Cover != null) data.Cover.Destination = DisplayCover;
var meta = data.Meta; var meta = data.Meta;
_title.text = string.Format("{0}\n{1}", meta.song.name, meta.name); m_title.text = string.Format("{0}\n{1}", meta.song.name, meta.name);
_desc.text = string.Format( m_desc.text = string.Format(
"Music artist: {0}\nCharter: {1}\nLength: {2}\nNote Count: {3}", "Music artist: {0}\nCharter: {1}\nLength: {2}\nNote Count: {3}",
meta.song.author, meta.author, meta.song.author, meta.author,
TimeSpan.FromSeconds(meta.length).ToString(3), meta.note_count TimeSpan.FromSeconds(meta.length).ToString(3), meta.note_count
@@ -54,7 +49,7 @@ namespace Cryville.Crtr.Browsing.UI {
} }
private void DisplayCover(bool succeeded, Texture2D tex) { private void DisplayCover(bool succeeded, Texture2D tex) {
if (succeeded) { if (succeeded) {
_cover.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero, 160, 0, SpriteMeshType.FullRect); m_cover.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero, 160, 0, SpriteMeshType.FullRect);
} }
} }
public void OnPlay() { public void OnPlay() {

View File

@@ -1,4 +1,3 @@
using Cryville.Common.Unity.UI;
using Cryville.Crtr.Config.UI; using Cryville.Crtr.Config.UI;
using Cryville.Crtr.UI; using Cryville.Crtr.UI;
using System.Collections.Generic; using System.Collections.Generic;
@@ -14,57 +13,32 @@ namespace Cryville.Crtr.Browsing.UI {
private Button m_configButton; private Button m_configButton;
[SerializeField] [SerializeField]
private ConfigPanelMaster m_configPanel; private ConfigPanelMaster m_configPanel;
[SerializeField]
private PathedResourceBrowser m_mainBrowser;
[SerializeField]
private DetailPanel m_detailPanel;
private DockLayoutGroup _group;
public ResourceBrowser MainBrowser { get; private set; }
private DetailPanel _detailPanel;
readonly List<ResourceBrowserUnit> _units = new List<ResourceBrowserUnit>(); readonly List<ResourceBrowserUnit> _units = new List<ResourceBrowserUnit>();
#pragma warning disable IDE0051
void Awake() { void Awake() {
_group = GetComponent<DockLayoutGroup>(); m_mainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath);
MainBrowser = transform.GetChild(0).GetComponent<ResourceBrowser>();
MainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath);
_detailPanel = transform.GetChild(1).GetComponent<DetailPanel>();
_units.Add(MainBrowser); _units.Add(MainBrowser);
_units.Add(_detailPanel); _units.Add(_detailPanel);
} }
int _slideDest = 0;
void Update() {
var cv = _group.SlideIndex;
_group.SlideIndex = (cv - _slideDest) * 0.86f + _slideDest;
}
#pragma warning restore IDE0051
public void ShowDetail(int id, ChartDetail detail) { public void ShowDetail(int id, ChartDetail detail) {
SlideIntoView(1); // SlideIntoView(1);
_detailPanel.Load(id, detail); m_detailPanel.Load(id, detail);
m_playButton.gameObject.SetActive(true); m_playButton.gameObject.SetActive(true);
m_configButton.gameObject.SetActive(true); m_configButton.gameObject.SetActive(true);
} }
/*[Obsolete]
public void ShowSettings(int id, ChartDetail detail) {
SlideIntoView(2);
_settingsPanel.Load(id, detail);
}*/
public bool Back() { public bool Back() {
if (_slideDest == 0) return false; // if (_slideDest == 0) return false;
SlideIntoView(_slideDest - 1); // SlideIntoView(_slideDest - 1);
return true; return true;
} }
private void SlideIntoView(int v) {
v = Mathf.Clamp(v, 0, _units.Count - 1);
var cv = _group.SlideIndex;
if (cv < v) _slideDest = v - 1;
else _slideDest = v;
_units[_slideDest].SlideToLeft();
_units[_slideDest + 1].SlideToRight();
}
public void Open(int id, ChartDetail detail) { public void Open(int id, ChartDetail detail) {
SetDataSettings(id, detail); SetDataSettings(id, detail);
#if UNITY_5_3_OR_NEWER #if UNITY_5_3_OR_NEWER
@@ -85,7 +59,7 @@ namespace Cryville.Crtr.Browsing.UI {
void SetDataSettings(int id, ChartDetail detail) { void SetDataSettings(int id, ChartDetail detail) {
Settings.Default.LoadRuleset = detail.Meta.ruleset + "/.umgr"; Settings.Default.LoadRuleset = detail.Meta.ruleset + "/.umgr";
Settings.Default.LoadRulesetConfig = detail.Meta.ruleset + ".json"; Settings.Default.LoadRulesetConfig = detail.Meta.ruleset + ".json";
Settings.Default.LoadChart = MainBrowser.ResourceManager.GetItemPath(id); Settings.Default.LoadChart = m_mainBrowser.ResourceManager.GetItemPath(id);
} }
} }
} }

View File

@@ -22,6 +22,8 @@ namespace Cryville.Crtr.UI {
TMP_Text m_title; TMP_Text m_title;
[SerializeField] [SerializeField]
GameObject[] m_backBlockingObjects; GameObject[] m_backBlockingObjects;
[SerializeField]
GameObject m_contents;
#pragma warning restore IDE0044 #pragma warning restore IDE0044
int frameIndex = 2; int frameIndex = 2;
@@ -30,7 +32,7 @@ namespace Cryville.Crtr.UI {
#pragma warning disable IDE0051 #pragma warning disable IDE0051
void Awake() { void Awake() {
Game.Init(); Game.Init();
transform.parent.Find("Canvas/Contents").gameObject.SetActive(true); m_contents.SetActive(true);
m_settingsPanel.Adapter = new DefaultPropertyMasterAdapter(Settings.Default); m_settingsPanel.Adapter = new DefaultPropertyMasterAdapter(Settings.Default);
PushTitle("Chart Browser"); PushTitle("Chart Browser");
} }

View File

@@ -2674,6 +2674,7 @@ MonoBehaviour:
m_backBlockingObjects: m_backBlockingObjects:
- {fileID: 1280379386} - {fileID: 1280379386}
- {fileID: 202309097} - {fileID: 202309097}
m_contents: {fileID: 221975151}
--- !u!4 &444982126 --- !u!4 &444982126
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0