setPieceAt method

Board setPieceAt(
  1. Square square,
  2. Piece piece
)

Puts a Piece on a Square overriding the existing one, if any.

Implementation

Board setPieceAt(Square square, Piece piece) {
  return removePieceAt(square).copyWith(
    occupied: occupied.withSquare(square),
    promoted: piece.promoted ? promoted.withSquare(square) : null,
    white: piece.color == Side.white ? white.withSquare(square) : null,
    black: piece.color == Side.black ? black.withSquare(square) : null,
    pawns: piece.role == Role.pawn ? pawns.withSquare(square) : null,
    knights: piece.role == Role.knight ? knights.withSquare(square) : null,
    bishops: piece.role == Role.bishop ? bishops.withSquare(square) : null,
    rooks: piece.role == Role.rook ? rooks.withSquare(square) : null,
    queens: piece.role == Role.queen ? queens.withSquare(square) : null,
    kings: piece.role == Role.king ? kings.withSquare(square) : null,
  );
}