legalDrops property

  1. @override
SquareSet get legalDrops
override

Gets all the legal drops of this position.

Implementation

@override
SquareSet get legalDrops {
  final mask = board.occupied
      .complement()
      .intersect(pockets != null && pockets!.hasQuality(turn)
          ? SquareSet.full
          : pockets != null && pockets!.hasPawn(turn)
              ? SquareSet.backranks.complement()
              : SquareSet.empty);

  final ctx = _makeContext();
  if (ctx.king != null && ctx.checkers.isNotEmpty) {
    final checker = ctx.checkers.singleSquare;
    if (checker == null) {
      return SquareSet.empty;
    } else {
      return mask & between(checker, ctx.king!);
    }
  } else {
    return mask;
  }
}