generatePlayerMoves method
Generates all moves for the specified player
. See MoveGenParams for possibilities.
Implementation
List<Move> generatePlayerMoves(int player, [MoveGenParams? params]) {
params ??= MoveGenParams.normal;
List<Move> moves = [];
for (int i = 0; i < board.length; i++) {
Square target = board[i];
if (target.isNotEmpty &&
(target.colour == player || target.colour == Bishop.neutralPassive)) {
List<Move> pieceMoves = generatePieceMoves(i, params);
moves.addAll(pieceMoves);
if (params.onlyOne && moves.isNotEmpty) return moves;
}
}
if (variant.handsEnabled && params.quiet && !params.onlyPiece) {
moves.addAll(generateDrops(player));
}
if (variant.hasMoveGenerators) {
moves.addAll(
variant.generateCustomMoves(
state: state,
player: player,
params: params,
),
);
}
if (variant.hasPass && params.quiet) {
final pass = generatePass(player);
if (pass != null) moves.insert(0, pass);
}
if (variant.forcedCapture != null && !params.ignorePieces) {
final captures = moves.captures;
if (captures.isNotEmpty) {
return captures;
}
}
return moves;
}