Пример #1
0
 private void UpdateGameState(Square from, Square to, Position newPosition, PieceColor playerWhoDidTheMove)
 {
     if (PlayerMovedPawnToPromotionRank(from, to))
     {
         State = GameState.Promotion;
     }
     else if (newPosition.WhiteKingIsInCheck() || newPosition.BlackKingIsInCheck())
     {
         State = newPosition.HasLegalMoves(PlayerToMove) ? GameState.Check : GameState.CheckMate;
     }
     else
     {
         State = newPosition.HasLegalMoves(PlayerToMove) &&
                 newPosition.HasLegalMoves(playerWhoDidTheMove)
                     ? GameState.Normal
                     : GameState.StaleMate;
     }
 }