public void checkKing()
        {
            ChessPiece king = Kings[WhitesTurn];

            turnKingInDanger = isTheKingInDanger(Board, WhitesTurn);
            king.Hightlight  = Color.White;
            if (turnKingInDanger)
            {
                bool movesAvailable = hasMoves(Board, WhitesTurn);
                if (movesAvailable)
                {
                    king.Hightlight = Color.Yellow;
                }
                else
                {
                    Winner          = !king.White ? WhitePlayer : BlackPlayer;
                    king.Hightlight = Color.Red;

                    if (Winner == Game1.player.Name)
                    {
                        ChessBoardMod.SyncGameResult(new GameResult(WhitePlayer, BlackPlayer, Winner));
                    }

                    SavedGameData.Sessions.Remove(Id);
                }
            }
        }
        public void surrender()
        {
            Winner = Game1.player.Name == WhitePlayer ? BlackPlayer : WhitePlayer;

            ChessBoardMod.SyncGameResult(new GameResult(WhitePlayer, BlackPlayer, Winner));
            nextTurn(new Point(-2, Winner == WhitePlayer ? 0 : 1), Point.Zero);
        }
        public void nextTurn(Point from, Point to)
        {
            temp                    = new Point[2];
            selectedPiece           = null;
            GameSession.WhitePlayer = WhitePlayer;
            GameSession.BlackPlayer = BlackPlayer;
            GameSession.Turns.Add(new ValueChangeRequest <Point, Point>(from, to, to));
            GameSession.NextTurnWhite = !WhitesTurn;
            SavedGameData.Sessions.AddOrReplace(GameSession.Id, GameSession);
            ChessBoardMod.SyncSession(GameSession);

            if (from.X == -2)
            {
                WhitesTurn = !WhitesTurn;
                reset(true);
            }
            else
            {
                Kings[WhitesTurn].Hightlight = Color.White;
                checkKing();
                reset(true);
            }
        }