24 lines
1.1 KiB
Dart
24 lines
1.1 KiB
Dart
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);
|
|
|
|
} |