using System.Diagnostics; namespace Shogi.Domain.YetToBeAssimilatedIntoDDD.Pathing; [DebuggerDisplay("{Direction} - {Distance}")] public record Path(Vector2 Direction, Distance Distance = Distance.OneStep) { public Path Invert() => new(Vector2.Negate(Direction), Distance); } public static class PathExtensions { public static Path GetNearestPath(this IEnumerable paths, Vector2 start, Vector2 end) { if (!paths.DefaultIfEmpty().Any()) { throw new ArgumentException("No paths to get nearest path from."); } var shortestPath = paths.First(); foreach (var path in paths.Skip(1)) { var distance = Vector2.Distance(start + path.Direction, end); var shortestDistance = Vector2.Distance(start + shortestPath.Direction, end); if (distance < shortestDistance) { shortestPath = path; } } return shortestPath; } }