setPieceAt method
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,
);
}