namespace Mr.BrickAdventures.Progression;
///
/// Stable identity of a Skill, matching the authored SkillData name that saves already
/// reference. Identity only — the upgrade table and presentation stay in the authored asset.
///
public readonly struct SkillId : IEquatable
{
public string Value { get; }
private SkillId(string value) => Value = value;
public static SkillId Of(string value) => string.IsNullOrWhiteSpace(value)
? throw new ArgumentException("A skill id cannot be blank.", nameof(value))
: new SkillId(value);
public bool Equals(SkillId other) => string.Equals(Value, other.Value, StringComparison.Ordinal);
public override bool Equals(object? obj) => obj is SkillId other && Equals(other);
public override int GetHashCode() => StringComparer.Ordinal.GetHashCode(Value ?? string.Empty);
public override string ToString() => Value;
}