removePieceAt method

Board removePieceAt(
  1. Square square
)

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;
}