using Cysharp.Threading.Tasks; using SepCore.AsyncTask; using SepCore.Definition; using UnityEngine; using UnityGameFramework.Runtime; namespace SepCore.UI { /// /// 道具详情界面逻辑(手写 partial,与自动生成的 ItemDetailsForm.cs 合并)。 /// 只提供详情显示能力,由调用方(WarehouseForm)传入物品 ID 后刷新。 /// public partial class ItemDetailsForm : UGuiForm { private int _iconVersion = 0; /// /// 按物品 ID 刷新详情界面;配置不存在时清空显示。 /// public void Refresh(int itemId) { _iconVersion++; ItemDetailsView view = View; if (view == null) { Log.Warning("ItemDetailsForm view is not configured."); return; } ItemConfig config = GameEntry.Luban.Get(itemId); if (config == null) { Log.Warning("Can not find item config '{0}' for item details.", itemId); ClearDetails(view); return; } if (view.itemDetailNameText != null) { view.itemDetailNameText.text = config.Name; } if (view.itemDetailTypeText != null) { view.itemDetailTypeText.text = GetItemTypeName(config.ItemType) + " / " + GetRarityName(config.Rarity); } if (view.hpFormatText != null) { view.hpFormatText.Set(config.MaxHpBonus); } if (view.atkFormatText != null) { view.atkFormatText.Set(config.AtkBonus); } if (view.mpFormatText != null) { view.mpFormatText.Set(config.MaxMpBonus); } if (view.matFormatText != null) { view.matFormatText.Set(config.MatBonus); } if (view.speedFormatText != null) { view.speedFormatText.Set(0); } if (view.stackFormatText != null) { view.stackFormatText.Set(config.StackLimit); } if (view.itemDetailDescriptionText != null) { view.itemDetailDescriptionText.text = string.Empty; } if (view.itemDetailIcon != null) { view.itemDetailIcon.gameObject.SetActive(false); } ShowIconAsync(config.Icon_Ref, _iconVersion).Forget(); } private static void ClearDetails(ItemDetailsView view) { if (view.itemDetailNameText != null) { view.itemDetailNameText.text = string.Empty; } if (view.itemDetailTypeText != null) { view.itemDetailTypeText.text = string.Empty; } if (view.itemDetailDescriptionText != null) { view.itemDetailDescriptionText.text = string.Empty; } if (view.itemDetailIcon != null) { view.itemDetailIcon.gameObject.SetActive(false); } } /// /// 异步加载物品图标;iconVersion 用于防止连续刷新时旧加载结果覆盖新内容。 /// private async UniTaskVoid ShowIconAsync(SpriteConfig iconConfig, int iconVersion) { if (iconConfig == null || View == null || View.itemDetailIcon == null) { return; } Sprite sprite = await SpriteLoader.LoadSpriteAsync(iconConfig); if (sprite == null || _iconVersion != iconVersion) { return; } View.itemDetailIcon.sprite = sprite; View.itemDetailIcon.gameObject.SetActive(true); } private static string GetItemTypeName(ItemType itemType) { switch (itemType) { case ItemType.Loot: return "战利品"; case ItemType.Equipment: return "装备"; case ItemType.Consumable: return "消耗品"; default: return "未知"; } } private static string GetRarityName(Rarity rarity) { switch (rarity) { case Rarity.White: return "白"; case Rarity.Green: return "绿"; case Rarity.Blue: return "蓝"; case Rarity.Gold: return "金"; case Rarity.Red: return "红"; default: return "无"; } } } }