Esempio n. 1
0
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);
}
Esempio n. 2
0
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			();
};