public static void Reset()
 {
     readyPlayers   = 0;
     currentPlayers = 0;
     isGameStarted  = false;
     for (int i = 0; i < 2; i++)
     {
         score[i] = 0;
     }
     RouterServer.Initialize();
     Server.Initialize();
 }
        public void _Disconnect()
        {
            if (tcp.clientSocket != null)
            {
                Console.WriteLine($"{tcp.clientSocket.Client.RemoteEndPoint} has disconnected.");
                if (player.isReady)
                {
                    GameLogic.readyPlayers--;
                }
                GameLogic.currentPlayers--;
                player = null;
                tcp.Disconnect();
                udp.Disconnect();
                ServerSend.KickPlayerToAllExcept(id);

                Server.Initialize(id);
            }
        }
            private void _ReceiveCallback(IAsyncResult _result)
            {
                try
                {
                    int _dataLength = stream.EndRead(_result);
                    if (_dataLength <= 0)
                    {
                        Server.clients[id]._Disconnect();
                        return;
                    }

                    byte[] _data = new byte[_dataLength];
                    Array.Copy(receiveBuffer, _data, _dataLength);

                    receivedPacket.Reset(_HandleData(_data));
                    stream.BeginRead(receiveBuffer, 0, dataBufferSize, _ReceiveCallback, null);
                }
                catch (Exception _ex)
                {
                    Console.WriteLine($"Error receiving TCP data: {_ex}");
                    Server.Initialize(id);
                }
            }