removePieceAt method
Removes the Piece at this Square if it exists.
Implementation
Board removePieceAt(Square square) {
final piece = pieceAt(square);
return piece != null
? copyWith(
occupied: occupied.withoutSquare(square),
promoted: piece.promoted ? promoted.withoutSquare(square) : null,
white:
piece.color == Side.white ? white.withoutSquare(square) : null,
black:
piece.color == Side.black ? black.withoutSquare(square) : null,
pawns: piece.role == Role.pawn ? pawns.withoutSquare(square) : null,
knights: piece.role == Role.knight
? knights.withoutSquare(square)
: null,
bishops: piece.role == Role.bishop
? bishops.withoutSquare(square)
: null,
rooks: piece.role == Role.rook ? rooks.withoutSquare(square) : null,
queens:
piece.role == Role.queen ? queens.withoutSquare(square) : null,
kings: piece.role == Role.king ? kings.withoutSquare(square) : null,
)
: this;
}