Crazyhouse.fromSetup constructor
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;
}