void CSbmfcsampleDlg::OnClickServerlist(NMHDR* pNMHDR, LRESULT* pResult) { // clear the player box m_playerList.DeleteAllItems(); // find the selected server POSITION pos = m_serverList.GetFirstSelectedItemPosition(); if(pos == NULL) return; int index = m_serverList.GetNextSelectedItem(pos); // get the server LVITEM item; item.mask = LVIF_PARAM; item.iItem = index; item.iSubItem = 0; m_serverList.GetItem(&item); SBServer server = (SBServer)item.lParam; if (!SBServerHasFullKeys(server)) //we need to query for the full rules { // turn on the hour glass HCURSOR cursor = SetCursor(LoadCursor(NULL, IDC_WAIT)); // do a server update (this is blocking!) ServerBrowserAuxUpdateServer(m_serverBrowser, server, SBFalse, SBTrue); // turn off the hour glass SetCursor(cursor); } // get the player count int count = SBServerGetIntValue(server, "numplayers", 0); // add the players to the list for(int i = 0 ; i < count ; i++) { m_playerList.InsertItem(0, SBServerGetPlayerStringValue(server, i, "player", "(NO NAME)")); m_playerList.SetItem(0, COL_PPING, LVIF_TEXT, SBServerGetPlayerStringValue(server, i, "ping", "0"), -1, 0, 0, 0); m_playerList.SetItem(0, COL_PSCORE, LVIF_TEXT, SBServerGetPlayerStringValue(server, i, "score", "0"), -1, 0, 0, 0); } // MFC *pResult = 0; GSI_UNUSED(pNMHDR); }
void CClientDlg::AddServerToList (SBServer server) { if (!server) return; net_csEnumeration.Enter (); HOST_NODE NewNode, *NODE = &NewNode; ZeroMemory (NODE, sizeof(HOST_NODE)); sprintf(NODE->dpCharAddress, "%s:%d", SBServerGetPublicAddress(server), SBServerGetPublicQueryPort(server)); sprintf(NODE->dpHostName, "%s", SBServerGetPublicAddress(server)); //--------------------------------------------------------------------- bool new_server = true; for (u32 I=0; I<net_Hosts.size(); I++) { HOST_NODE& N = net_Hosts [I]; // if ( !stricmp(N.dpCharAddress, NODE->dpCharAddress)) if (N.dpServer == server) { new_server = false; NODE = &N; break; } }; //--------------------------------------------------------------------- sprintf(NODE->dpServerName, "%s", SBServerGetStringValue(server, qr2_registered_key_list[HOSTNAME_KEY], NODE->dpHostName)); // [5/20/2005] char dbgStr[1024]; sprintf(dbgStr, "%s - %s\n", NODE->dpHostName, NODE->dpServerName); OutputDebugString(dbgStr); // [5/20/2005] sprintf(NODE->dpSessionName, "%s", SBServerGetStringValue(server, qr2_registered_key_list[MAPNAME_KEY], "Unknown")); NODE->dpServerGameType = GetGameType((char*)SBServerGetStringValue(server, qr2_registered_key_list[GAMETYPE_NAME_KEY], "UNKNOWN")); string1024 xtmp; strcpy(xtmp, (char*)SBServerGetStringValue(server, qr2_registered_key_list[GAMETYPE_KEY], "")); NODE->dpServerGameType = GetGameType((byte)SBServerGetIntValue(server, qr2_registered_key_list[GAMETYPE_KEY], 0)); NODE->dpPassword = SBServerGetBoolValue(server, qr2_registered_key_list[PASSWORD_KEY], SBFalse); NODE->dpPing = SBServerGetPing(server); NODE->dpServerNumPlayers = SBServerGetIntValue(server, qr2_registered_key_list[NUMPLAYERS_KEY], 0); NODE->dpServerMaxPlayers = SBServerGetIntValue(server, qr2_registered_key_list[MAXPLAYERS_KEY], 32); NODE->dpDedicated = SBServerGetBoolValue(server, qr2_registered_key_list[DEDICATED_KEY], SBFalse) == SBTrue; NODE->dpFFire = SBServerGetBoolValue(server, qr2_registered_key_list[G_FRIENDLY_FIRE_KEY], SBFalse) == SBTrue; NODE->dpPort = SBServerGetIntValue(server, qr2_registered_key_list[HOSTPORT_KEY], 0); NODE->dpServer = server; char PlayerName[1024] = ""; sprintf(PlayerName, "%s", SBServerGetPlayerStringValue(server, 0, "player", "Unknown")); SBBool HasFullKeys = SBServerHasFullKeys(server); if (new_server) net_Hosts.push_back(*NODE); else { int x=0; x=x; } if (m_bQuickRefresh) { m_pGameSpyUpdateList.EnableWindow(TRUE); m_pGameSpyRefreshList.EnableWindow(TRUE); m_bQuickRefresh = false; }; net_csEnumeration.Leave (); };