namespace Shogi.Domain.Other; public record MoveValidationContext( Vector2 From, Vector2 To, bool IsPromotion, TPiece?[,] BoardState) where TPiece : IRulesLifecycle { public TPiece? GetPieceByRelativePosition(Vector2 relativePosition) { var absolute = From + relativePosition; return BoardState[(int)absolute.X, (int)absolute.Y]; } }