Files
Gen_Hack-and-Slash-Roguelit…/Client/Assets/Scripts/Data/Define.cs

58 lines
2.1 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.Text;
using System.Xml.Linq;
namespace Data
{
public abstract class Define
{
public string defName;
public string label;
public string description;
public string packID;
/// <summary>
/// 初始化方法,根据传入的 XML 元素 (<paramref name="xmlDef"/>) 进行处理。
/// </summary>
/// <param name="xmlDef">包含定义信息的 XML 元素。</param>
/// <returns>
/// 返回一个布尔值:
/// - 如果返回 <c>false</c>,表示按照默认方式处理(依次对 XML 进行变量名识别和赋值)。
/// - 如果返回 <c>true</c>,表示使用自定义方式处理,不进行额外的默认处理。
/// </returns>
/// <remarks>
/// <para>
/// 该方法的基类实现会自动识别并处理以下三个变量:
/// - <c>defName</c>
/// - <c>label</c>
/// - <c>description</c>
/// </para>
/// <para>
/// 如果需要覆盖默认行为,可以在派生类中重写此方法,并返回 <c>true</c>
/// 以指示框架跳过默认处理逻辑。
/// </para>
/// </remarks>
public virtual bool Init(XElement xmlDef)
{
defName = xmlDef.Element("defName")?.Value;
label = xmlDef.Element("label")?.Value;
description = xmlDef.Element("description")?.Value;
return false;
}
public override string ToString()
{
// 定义对齐格式(左对齐,固定宽度)
const int labelWidth = -15; // 标签左对齐占15字符
const int valueWidth = -30; // 值左对齐占30字符
var sb = new StringBuilder();
sb.AppendLine($"{"DefName:",labelWidth}{defName,valueWidth}");
sb.AppendLine($"{"Label:",labelWidth}{label,valueWidth}");
sb.AppendLine($"{"Description:",labelWidth}{description,valueWidth}");
sb.AppendLine($"{"PackID:",labelWidth}{packID,valueWidth}");
return sb.ToString();
}
}
}