void OnGetGames(List<MyGameInfo> gamesList)
        {
            MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;
            if (m_waitDialog != null)
            {
                m_waitDialog.CloseScreen();
                m_waitDialog = null;
            }

            lock (m_repopulateLocker)
            {
                if (!FillGamesFromLobbiesInfo(gamesList))
                    return;

                OrderGames();
                RefreshGameList();
            }
        }
        void Static_ServerDisconnected(Lidgren.Network.NetConnection connection)
        {
            MySteam.RefreshSessionTicket();

            if (m_waitDialog != null)
            {
                m_waitDialog.CloseScreen();
                m_waitDialog = null;
            }
            MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;
            ShowNetworkError();
        }
 void OnDownloadingSector()
 {
     if (m_waitingScreen != null)
     {
         m_waitingScreen.CloseScreenNow();
         m_waitingScreen = new MyGuiScreenWaiting(MyTextsWrapperEnum.DownloadingData, OnJoiningCancelOrTimeout);
         MyGuiManager.AddModalScreen(m_waitingScreen, null);
     }
 }
        private void GetDataFromServer(bool withWaitDialog)
        {
            m_games.Clear();

            if (MySteam.IsActive && !MySteam.IsOnline)
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SteamInvalidTicketText, MyTextsWrapperEnum.SteamInvalidTicketCaption, MyTextsWrapperEnum.Ok, null));
                return;
            }

            try
            {
                if (m_gameTypeFilter != MyGameTypes.None)
                {
                    MyMultiplayerPeers.Static.ServerDisconnected -= m_serverDisconnectedHandler;
                    MyMultiplayerLobby.Static.GetGames(OnGetGames, m_searchTextbox.Text, m_gameTypeFilter);
                    if (withWaitDialog)
                    {
                        MyMultiplayerPeers.Static.ServerDisconnected += m_serverDisconnectedHandler;
                        m_waitDialog = new MyGuiScreenWaiting(MyTextsWrapperEnum.LoadFromServer, new EventHandler<WaitingCanceledArgs>(WaitCanceled), TimeSpan.FromSeconds(30));
                        MyGuiManager.AddModalScreen(m_waitDialog, null);
                    }
                }
                else
                {
                    OnGetGames(new List<MyGameInfo>());
                }
            }
            catch (Exception exception)
            {
                HandleError(new StringBuilder("Cannot connect to server"));
                MyMwcLog.WriteLine("Cannot connect to server:");
                MyMwcLog.WriteLine(exception);
                MyMultiplayerPeers.Static.Shutdown();
            }
        }
        void TryJoinGame()
        {
            if (m_selectedGameIndex < m_games.Count)
            {
                var gameInfo = m_games[m_selectedGameIndex].GameInfo;

                if (!MinerWars.AppCode.Game.World.MyClientServer.MW25DEnabled && (gameInfo.Name.ToUpper().Contains("2,5D") || gameInfo.Name.ToUpper().Contains("2.5D")))
                {
                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.YouNeed25D, MyTextsWrapperEnum.MessageBoxCaptionFeatureDisabled, MyTextsWrapperEnum.Ok, null));
                    return;
                }

                MyMultiplayerLobby.Static.JoinGame(gameInfo, String.Empty, OnGameJoined, OnGameEnterDisallowed, OnDownloadingSector);
                // Longer join timeout...to be able to join after loading
                m_waitingScreen = new MyGuiScreenWaiting(MyTextsWrapperEnum.JoiningGame, OnJoiningCancelOrTimeout, TimeSpan.FromSeconds(120));
                MyGuiManager.AddScreen(m_waitingScreen);
            }
        }