public bool IsInCheck(PieceColor playerColor) { var kingPosition = (0, 0); foreach (var piece in _grid) { var isPlayersKing = piece is King && piece.Color == playerColor; if (isPlayersKing) { kingPosition = piece.Coordinates; } } return(_gridToQuery() .Where(piece => piece.Color == playerColor.GetOpposingColor()) .Any(piece => piece.GetMoveOptions(this).Contains(kingPosition))); }
public void OnEndTurn(object source, EndTurnEventArgs e) { _history.Push(e.Memento); _currentPlayer = _currentPlayer.GetOpposingColor(); }