Crazyhouse.fromSetup constructor

Crazyhouse.fromSetup(
  1. Setup setup, {
  2. bool? ignoreImpossibleCheck,
})

Sets up a playable Crazyhouse position.

Throws a PositionSetupException if the Setup does not meet basic validity requirements. Optionnaly pass ignoreImpossibleCheck if you want to skip that requirement.

Implementation

factory Crazyhouse.fromSetup(Setup setup, {bool? ignoreImpossibleCheck}) {
  final pos = Crazyhouse(
    board: setup.board.withPromoted(setup.board.promoted
        .intersect(setup.board.occupied)
        .diff(setup.board.kings)
        .diff(setup.board.pawns)),
    pockets: setup.pockets ?? Pockets.empty,
    turn: setup.turn,
    castles: Castles.fromSetup(setup),
    epSquare: _validEpSquare(setup),
    halfmoves: setup.halfmoves,
    fullmoves: setup.fullmoves,
  );
  pos.validate(ignoreImpossibleCheck: ignoreImpossibleCheck);
  return pos;
}