generateDrops method

List<Move> generateDrops(
  1. int colour, [
  2. bool legal = true
])

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;
}