Fix error on invalid resource item.

This commit is contained in:
2023-11-13 00:36:30 +08:00
parent 4ca5809597
commit 2778725b91
2 changed files with 21 additions and 15 deletions

View File

@@ -57,13 +57,12 @@ namespace Cryville.Crtr.Browsing {
get { get {
var item = items[index]; var item = items[index];
ChartMeta meta = null; ChartMeta meta = null;
AsyncDelivery<Texture2D> cover = null;
var metaFile = new FileInfo(Path.Combine(item.FullName, ".umgc")); var metaFile = new FileInfo(Path.Combine(item.FullName, ".umgc"));
if (metaFile.Exists) { if (metaFile.Exists) {
using (var reader = new StreamReader(metaFile.FullName)) { using (var reader = new StreamReader(metaFile.FullName)) {
meta = JsonConvert.DeserializeObject<ChartMeta>(reader.ReadToEnd()); meta = JsonConvert.DeserializeObject<ChartMeta>(reader.ReadToEnd());
} }
}
AsyncDelivery<Texture2D> cover = null;
if (meta.cover != null && meta.cover != "") { if (meta.cover != null && meta.cover != "") {
var coverFile = item.GetFiles(meta.cover); var coverFile = item.GetFiles(meta.cover);
if (coverFile.Length > 0) { if (coverFile.Length > 0) {
@@ -73,6 +72,7 @@ namespace Cryville.Crtr.Browsing {
Game.NetworkTaskWorker.SubmitNetworkTask(task); Game.NetworkTaskWorker.SubmitNetworkTask(task);
} }
} }
}
return new ChartDetail { return new ChartDetail {
Cover = cover, Cover = cover,
Meta = meta, Meta = meta,

View File

@@ -43,6 +43,7 @@ namespace Cryville.Crtr.Browsing.UI {
m_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;
if (meta != null) {
m_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);
m_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}",
@@ -50,6 +51,11 @@ namespace Cryville.Crtr.Browsing.UI {
TimeSpan.FromSeconds(meta.length).ToString(3), meta.note_count TimeSpan.FromSeconds(meta.length).ToString(3), meta.note_count
); );
} }
else {
m_title.text = "<color=#ff0000>Invalid resource</color>";
m_desc.text = string.Empty;
}
}
private void DisplayCover(bool succeeded, Texture2D tex) { private void DisplayCover(bool succeeded, Texture2D tex) {
if (succeeded) { if (succeeded) {
m_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);