void CSbmfcsampleDlg::AddServer(SBServer server, BOOL checkForReplace) { // set the progress if(ServerBrowserCount(m_serverBrowser) > 0) m_progress.SetPos((ServerBrowserCount(m_serverBrowser) - ServerBrowserPendingQueryCount(m_serverBrowser)) * 100 / ServerBrowserCount(m_serverBrowser)); // check for the server in the list int index = FindServer(server); bool replace = (index != -1); // if we didn't find a server to replace, append if(!replace) index = m_serverList.GetItemCount(); // set or insert the hostname const char * hostname = SBServerGetStringValue(server, "hostname","(NO NAME)"); if(replace) { m_serverList.SetItem(index, COL_SERVERNAME, LVIF_TEXT, hostname, -1, 0, 0, NULL); } else { m_serverList.InsertItem(index, hostname); m_serverList.SetItem(index, COL_SERVERNAME, LVIF_PARAM, NULL, -1, 0, 0, (LPARAM)server); } // set the rest of the columns int numplayers = SBServerGetIntValue(server, "numplayers", 0); CString ping, players; if (SBServerHasValidPing(server)) ping.Format("%d%s", SBServerGetPing(server), SBServerDirectConnect(server) ? "" : "i"); else ping = "Unknown"; players.Format("%d/%d", numplayers, SBServerGetIntValue(server, "maxplayers", 0)); m_serverList.SetItem(index, COL_PING, LVIF_TEXT, ping, -1, 0, 0, 0); m_serverList.SetItem(index, COL_PLAYERS, LVIF_TEXT, players, -1, 0, 0, 0); m_serverList.SetItem(index, COL_MAPNAME, LVIF_TEXT, SBServerGetStringValue(server, "mapname", "(NO MAP)"), -1, 0, 0, 0); m_serverList.SetItem(index, COL_GAMETYPE, LVIF_TEXT, SBServerGetStringValue(server, "gametype", ""), -1, 0, 0, 0); // update server count if(!replace) { CString str; str.Format("%d", ++m_serverCount); m_servers.SetWindowText(str); } GSI_UNUSED(checkForReplace); }
int SBServerGetIntValueA(SBServer server, const char *key, int idefault) { const char *s, *s2; // check assumtions during development GS_ASSERT(key != NULL); GS_ASSERT(server != NULL); if (server == NULL) return idefault; if (strcmp(key,"ping") == 0) //ooh! they want the ping! return SBServerGetPing(server); s = SBServerGetStringValueA(server, key, NULL); if (s == NULL) return idefault; s2 = (*s != '-') ? s : s+1; // check for signed values if (!isdigit((unsigned char)*s2)) // empty-string/non-numeric should return idefault return idefault; else return atoi(s); }
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 (); };