public override bool IsSpecialMove(Square origin, Square destination) { if (origin.Color == GetEnPassantSquare(origin, destination).Color) return false; var occupierOfEnPassantPosition = GetEnPassantSquare(origin, destination).Occupier; return (origin.DiagonallyForwardTo(destination) && origin.DistanceOfRanksIsOneTo(destination) && destination.Color == PieceColor.Empty && occupierOfEnPassantPosition.MoveCount == 1); }
private bool MovingSingleRankForward(Square origin, Square destination) { return (origin.ForwardTo(destination) && origin.DistanceOfRanksIsOneTo(destination) && destination.Color == PieceColor.Empty); }
private bool Attacking(Square origin, Square destination) { return (origin.Color != destination.Color && destination.Color != PieceColor.Empty && origin.DistanceOfRanksIsOneTo(destination) && origin.DiagonallyForwardTo(destination)); }
private bool MovingOneSquareDiagonally(Square origin, Square destination) { return (origin.DistanceOfRanksIsOneTo(destination) && origin.DistanceOfFilesIsOneTo(destination)); }
private bool MovingOneSquareForwardOrBackward(Square origin, Square destination) { return (origin.DistanceOfRanksIsOneTo(destination) && origin.DistanceOfFilesIsZeroTo(destination)); }
private bool MovingOneRankAndTwoFiles(Square origin, Square destination) { return (origin.DistanceOfRanksIsOneTo(destination) && origin.DistanceOfFilesIsTwoTo(destination)); }