void dlgMain::OnMonitorSignal(wxCommandEvent& event) { mtrs_struct_t *Result = (mtrs_struct_t *)event.GetClientData(); wxInt32 i; switch (Result->Signal) { case mtrs_master_timeout: if (!MServer->GetServerCount()) break; case mtrs_master_success: break; case mtrs_server_noservers: wxMessageBox(_T("There are no servers to query"), _T("Error"), wxOK | wxICON_ERROR); break; case mtrs_server_singletimeout: i = FindServerInList(QServer[Result->Index].GetAddress()); m_LstCtrlPlayers->DeleteAllItems(); QServer[Result->Index].ResetData(); if (launchercfg_s.show_blocked_servers) if (i == -1) AddServerToList(m_LstCtrlServers, QServer[Result->Index], Result->Index); else AddServerToList(m_LstCtrlServers, QServer[Result->Index], i, 0); break; case mtrs_server_singlesuccess: m_LstCtrlPlayers->DeleteAllItems(); AddServerToList(m_LstCtrlServers, QServer[Result->Index], Result->ServerListIndex, 0); AddPlayersToList(m_LstCtrlPlayers, QServer[Result->Index]); TotalPlayers += QServer[Result->Index].info.numplayers; break; default: break; } GetStatusBar()->SetStatusText(wxString::Format(_T("Master Ping: %u"), MServer->GetPing()), 1); GetStatusBar()->SetStatusText(wxString::Format(_T("Total Players: %d"), TotalPlayers), 3); delete Result; }
// worker threads post to this callback void dlgMain::OnWorkerSignal(wxCommandEvent& event) { wxInt32 i; switch (event.GetId()) { case 0: // server query timed out { i = FindServerInList(QServer[event.GetInt()].GetAddress()); m_LstCtrlPlayers->DeleteAllItems(); QServer[event.GetInt()].ResetData(); if (launchercfg_s.show_blocked_servers) if (i == -1) AddServerToList(m_LstCtrlServers, QServer[event.GetInt()], event.GetInt()); else AddServerToList(m_LstCtrlServers, QServer[event.GetInt()], i, 0); break; } case 1: // server queried successfully { AddServerToList(m_LstCtrlServers, QServer[event.GetInt()], event.GetInt()); TotalPlayers += QServer[event.GetInt()].info.numplayers; break; } } ++QueriedServers; GetStatusBar()->SetStatusText(wxString::Format(_T("Queried Server %d of %d"), QueriedServers, MServer->GetServerCount()), 2); GetStatusBar()->SetStatusText(wxString::Format(_T("Total Players: %d"), TotalPlayers), 3); }
void CClientDlg::RefillServersList () { OutputDebugString("CClientDlg::RefillServersList \n"); ClearHostList(); // clear the server count // m_serverCount = 0; // m_servers.SetWindowText("0"); // go through the list of servers for(int i = 0; i < ServerBrowserCount(m_serverBrowser) ; i++) { // if we got basic info for it, put it back in the list SBServer server = ServerBrowserGetServer(m_serverBrowser, i); // if(SBServerHasBasicKeys(server)) AddServerToList(server);//, FALSE); } UpdateServersList(); };
void CServerList::RefreshList_internal() { m_need_refresh_fr = u32(-1); SaveCurItem (); m_list[LST_SERVER].Clear(); ClearSrvItems (); u32 NumServersFound = browser().GetServersCount(); g_gs_browser = m_GSBrowser; m_tmp_srv_lst.resize (NumServersFound); for (u32 i=0; i<NumServersFound; i++) m_tmp_srv_lst[i] = i; if (0 == xr_strcmp(m_sort_func, "server_name")) std::sort(m_tmp_srv_lst.begin(), m_tmp_srv_lst.end(), sort_by_ServerName); else if (0 == xr_strcmp(m_sort_func, "map")) std::sort(m_tmp_srv_lst.begin(), m_tmp_srv_lst.end(), sort_by_Map); else if (0 == xr_strcmp(m_sort_func, "game_type")) std::sort(m_tmp_srv_lst.begin(), m_tmp_srv_lst.end(), sort_by_GameType); else if (0 == xr_strcmp(m_sort_func, "player")) std::sort(m_tmp_srv_lst.begin(), m_tmp_srv_lst.end(), sort_by_Players); else if (0 == xr_strcmp(m_sort_func, "ping")) std::sort(m_tmp_srv_lst.begin(), m_tmp_srv_lst.end(), sort_by_Ping); else if (0 == xr_strcmp(m_sort_func, "version")) std::sort(m_tmp_srv_lst.begin(), m_tmp_srv_lst.end(), sort_by_Version); for (u32 i=0; i<NumServersFound; i++) { ServerInfo NewServerInfo; browser().GetServerInfoByIndex (&NewServerInfo, m_tmp_srv_lst[i]); AddServerToList (&NewServerInfo); } UpdateSizes(); RestoreCurItem(); };