generateLegal method

List<int> generateLegal()

Legal moves: pseudo-legal filtered by making each and rejecting those that leave our king in check.

Implementation

List<int> generateLegal() {
  final pseudo = <int>[];
  generatePseudoLegal(pseudo);
  final legal = <int>[];
  for (final m in pseudo) {
    makeMove(m);
    // After makeMove, turn flipped; our king is the side that just moved.
    if (!isSquareAttacked(_kingSquareOf(turn ^ 1), turn)) {
      legal.add(m);
    }
    unmakeMove();
  }
  return legal;
}