Пример #1
0
//设置人数
VOID CServerListData::SetServerOnLineCount(WORD wServerID, DWORD dwOnLineCount)
{
	//搜索房间
	CGameServerItem * pGameServerItem=SearchGameServer(wServerID);

	//设置人数
	if (pGameServerItem!=NULL)
	{
		//设置变量
		m_dwAllOnLineCount -= pGameServerItem->m_GameServer.dwOnLineCount;
		m_dwAllOnLineCount += dwOnLineCount;

		//设置变量
		pGameServerItem->m_GameServer.dwOnLineCount=dwOnLineCount;

		//事件通知
		ASSERT(m_pIServerListDataSink!=NULL);
		if (m_pIServerListDataSink!=NULL) m_pIServerListDataSink->OnGameItemUpdate(pGameServerItem);

		//查找类型
		CGameKindItem * pGameKindItem = SearchGameKind(pGameServerItem->m_GameServer.wKindID);
		if(pGameKindItem)
		{
			//变量定义
			DWORD dwGameKindOnline=0;
			POSITION Position=NULL;
			do
			{
				//获取房间
				CGameServerItem * pGameServerItem2=EmunGameServerItem(Position);

				//设置房间
				if((pGameServerItem2 != NULL) && (pGameServerItem2->m_GameServer.wKindID == pGameServerItem->m_GameServer.wKindID))
				{
					dwGameKindOnline += pGameServerItem2->m_GameServer.dwOnLineCount;
				}

			} while (Position!=NULL);

			//设置变量
			pGameKindItem->m_GameKind.dwOnLineCount = dwGameKindOnline;

			//事件通知
			ASSERT(m_pIServerListDataSink!=NULL);
			if (m_pIServerListDataSink!=NULL) m_pIServerListDataSink->OnGameItemUpdate(pGameKindItem);
		}
	}

	return;
}
Пример #2
0
//更新人数
bool __cdecl CServerListCenter::UpdateServerOnLineCount(WORD wKindID, WORD wServerID, DWORD dwOnLineCount)
{
	tagGameServerItem * pGameServerItem=SearchGameServer(wKindID,wServerID);
	if (pGameServerItem!=NULL)
	{
		//更新房间
		pGameServerItem->dwUpdateTime=(DWORD)time(NULL);
		pGameServerItem->GameServer.dwOnLineCount=dwOnLineCount;

		//更新人数
		UpdateKindOnLineCount(wKindID);

		return true;
	}

	return false;
}