Files
Cielonos/Assets/Scripts/MainGame/UI/PlayerUI/MainGamePages/Common/Item/ItemDescriptionEntry.cs
SoulliesOfficial 6d7ebc5825 Passion & UI
2026-06-12 17:11:39 -04:00

59 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections.Generic;
using Cielonos.MainGame.Inventory;
using SLSUtilities.General;
using SLSUtilities.UI;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Cielonos.MainGame.UI
{
/// <summary>
/// 单条物品描述条目 UI 组件。
/// 渲染管线Localize → DisplayTextResolver.Resolve → InputGlyphParser.Parse → TMP_Text。
/// </summary>
public class ItemDescriptionEntry : MonoBehaviour
{
private const string LocalizationTable = "Items";
[Tooltip("描述文本,显示 descriptionKey 的本地化内容(含动态数值替换和按键图标解析)。")]
public TMP_Text descriptionText;
/// <summary>
/// 使用 <see cref="ItemDescription"/> 的数据填充描述条目。
/// 完整渲染管线:本地化 → {key} 占位符替换 → [Token] 按键图标解析。
/// </summary>
/// <param name="description">描述数据。</param>
/// <param name="descriptionArgs">可选的动态值字典,用于替换本地化文本中的 {key} 占位符。</param>
public void SetDescription(ItemDescription description, Dictionary<string, string> descriptionArgs = null)
{
if (description == null)
{
Clear();
return;
}
if (descriptionText == null) return;
if (string.IsNullOrEmpty(description.descriptionKey))
{
descriptionText.text = string.Empty;
return;
}
string localizedText = description.descriptionKey.Localize(LocalizationTable);
localizedText = DisplayTextResolver.Resolve(localizedText, descriptionArgs);
descriptionText.text = InputGlyphParser.Parse(localizedText);
}
/// <summary>清空条目内容。</summary>
public void Clear()
{
if (descriptionText != null)
{
descriptionText.text = string.Empty;
}
}
}
}