import 'package:omnichess/classes/position.dart'; import 'package:omnichess/constants/piece.dart'; import 'package:omnichess/exceptions/king_not_found.dart'; part "_partials/legal_moves_black.dart"; part "_partials/legal_moves_white.dart"; class LegalMoves { LegalMoves._(); static Iterable<(String, Position)> getLegalMoves(Position position) => position.isWhiteTurn ? _LegalMovesWhite._getLegalMoves(position) : _LegalMovesBlack._getLegalMoves(position); static bool isCheckmate(Position position) => position.isWhiteTurn ? (_LegalMovesWhite._isWhiteChecked(position) && getLegalMoves(position).isEmpty) : (_LegalMovesBlack._isBlackChecked(position) && getLegalMoves(position).isEmpty); static bool isWhiteAttacking(Position position, int square) => _LegalMovesBlack._isWhiteAttacking(position, square); static bool isBlackAttacking(Position position, int square) => _LegalMovesWhite._isBlackAttacking(position, square); static bool isWhiteChecked(Position position) => _LegalMovesWhite._isWhiteChecked(position); static bool isBlackChecked(Position position) => _LegalMovesBlack._isBlackChecked(position); }