Files
Nitrox/NitroxModel/DataStructures/NitroxVersion.cs
2025-07-06 00:23:46 +02:00

50 lines
1.1 KiB
C#

using System;
namespace NitroxModel.DataStructures;
/// <summary>
/// Serializable version of <see cref="Version" /> with only major and minor properties.
/// </summary>
[Serializable]
public readonly struct NitroxVersion : IComparable<NitroxVersion>
{
public ushort Major { get; init; }
public ushort Minor { get; init; }
public NitroxVersion(ushort major, ushort minor)
{
Major = major;
Minor = minor;
}
public NitroxVersion(int major, int minor) : this((ushort)major, (ushort)minor)
{
if (major is < 0 or > ushort.MaxValue)
{
throw new ArgumentOutOfRangeException(nameof(major));
}
if (minor is < 0 or > ushort.MaxValue)
{
throw new ArgumentOutOfRangeException(nameof(minor));
}
}
public int CompareTo(NitroxVersion other)
{
if (Major != other.Major)
{
return Major > other.Major ? 1 : -1;
}
if (Minor != other.Minor)
{
return Minor > other.Minor ? 1 : -1;
}
return 0;
}
public override string ToString() => $"{Major}.{Minor}";
}