using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AnotherReplayReader.Utils { public readonly struct ShortTimeSpan : IEquatable, IComparable, IComparable { public readonly TimeSpan Value; public ShortTimeSpan(TimeSpan value) => Value = value; public static implicit operator TimeSpan(ShortTimeSpan span) => span.Value; public static implicit operator ShortTimeSpan(TimeSpan value) => new(value); public override string ToString() => $"{(int)Value.TotalMinutes:00}:{Value.Seconds:00}"; public int CompareTo(ShortTimeSpan other) => Value.CompareTo(other.Value); public int CompareTo(object obj) => obj is ShortTimeSpan span ? CompareTo(span) : 1; public override bool Equals(object? obj) => obj is ShortTimeSpan span && Equals(span); public bool Equals(ShortTimeSpan other) => Value.Equals(other.Value); public override int GetHashCode() => Value.GetHashCode(); public static bool operator ==(ShortTimeSpan left, ShortTimeSpan right) => left.Equals(right); public static bool operator !=(ShortTimeSpan left, ShortTimeSpan right) => !(left == right); public static bool operator <(ShortTimeSpan left, ShortTimeSpan right) => left.CompareTo(right) < 0; public static bool operator >(ShortTimeSpan left, ShortTimeSpan right) => left.CompareTo(right) > 0; } }