52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using System;
|
|
|
|
/// <summary>
|
|
/// 打孔带运行时与存档数据。流程、资源和显示信息统一由 DefinitionId 在 PunchTapeCatalog 中解析。
|
|
/// </summary>
|
|
namespace AibisDream.FixSystem
|
|
{
|
|
[Serializable]
|
|
public class PunchTape : IEquatable<PunchTape>
|
|
{
|
|
public string DefinitionId;
|
|
public bool used;
|
|
|
|
public PunchTape()
|
|
{
|
|
}
|
|
|
|
public PunchTape(string definitionId)
|
|
{
|
|
DefinitionId = definitionId;
|
|
}
|
|
|
|
/// <summary>用于收藏列表去重与 UI 行映射(与 Equals 一致)。</summary>
|
|
public string GetRowKey()
|
|
{
|
|
return DefinitionId ?? string.Empty;
|
|
}
|
|
|
|
public bool Equals(PunchTape other)
|
|
{
|
|
if (other is null) return false;
|
|
if (ReferenceEquals(this, other)) return true;
|
|
return string.Equals(DefinitionId, other.DefinitionId, StringComparison.Ordinal);
|
|
}
|
|
|
|
public override bool Equals(object obj) => Equals(obj as PunchTape);
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return DefinitionId != null ? StringComparer.Ordinal.GetHashCode(DefinitionId) : 0;
|
|
}
|
|
|
|
public static bool operator ==(PunchTape left, PunchTape right)
|
|
{
|
|
if (left is null) return right is null;
|
|
return left.Equals(right);
|
|
}
|
|
|
|
public static bool operator !=(PunchTape left, PunchTape right) => !(left == right);
|
|
}
|
|
}
|