public static MoveSummary CanRookMove(Board board, Square from, Square to) { //throw new NotImplementedException("CanRookMove"); var piece = board[from]; var isSameColor = board[from].Color == board[to].Color; var isCapturing = board[to].IsNone() ? false : !isSameColor; var isMovePossible = !isSameColor && Checker.CanMoveLineary( MoveProperty.IsHorizontalLine(from, to) || MoveProperty.IsVerticalLine(from, to), board, from, to); var isWhite = piece.Color.IsWhite(); var startQueensideSquare = isWhite ? WhiteCastlingSquares.QueensideRookStartSquare : BlackCastlingSquares.QueensideRookStartSquare; var startKingsideSquare = isWhite ? WhiteCastlingSquares.KingsideRookStartSquare : BlackCastlingSquares.KingsideRookStartSquare; var isQueensideRookMoving = from == startQueensideSquare; var isKingsideRookMoving = from == startKingsideSquare; return(MoveSummaryBuilder.RookSummary( isCapturing, isMovePossible, isQueensideRookMoving, isKingsideRookMoving, to)); }
public static MoveSummary CanQueenMove(Board board, Square from, Square to) { var isSameColor = board[from].Color == board[to].Color; var isCapturing = board[to].IsNone() ? false : !isSameColor; var isMovePossible = !isSameColor && Checker.CanMoveLineary( MoveProperty.IsHorizontalLine(from, to) || MoveProperty.IsVerticalLine(from, to) || MoveProperty.IsDiagonalLine(from, to), board, from, to); return(MoveSummaryBuilder.DefaultMoveSummary(isCapturing, isMovePossible, to)); }