using System; using System.Collections.Generic; using System.Linq; namespace MareSynchronos.API { public class FileReplacementDto { public string[] GamePaths { get; set; } = Array.Empty(); public string Hash { get; set; } public override bool Equals(object? otherObj) { if (otherObj == null || otherObj is not FileReplacementDto other) return false; return Hash == other.Hash && Enumerable.SequenceEqual(GamePaths, other.GamePaths); } public override int GetHashCode() { return HashCode.Combine(GetOrderIndependentHashCode(GamePaths), Hash); } public static int GetOrderIndependentHashCode(IEnumerable source) { int hash = 0; foreach (T element in source) { hash = unchecked(hash + EqualityComparer.Default.GetHashCode(element)); } return hash; } public override string ToString() { return Hash + ":" + string.Join(",", GamePaths); } } }