generateDrops method
Generates drop moves for colour
. Used for variants with hands, e.g. Crazyhouse.
Implementation
List<Move> generateDrops(int colour, [bool legal = true]) {
List<Move> drops =
variant.generateDrops(state: state, colour: colour) ?? [];
if (legal) {
List<Move> remove = [];
for (Move m in drops) {
bool valid = makeMove(m, false);
if (!valid ||
lostBy(colour, ignoreSoftResults: true) ||
kingAttacked(colour)) {
remove.add(m);
}
undo();
}
for (Move m in remove) {
drops.remove(m);
}
}
return drops;
}