Exemplo n.º 1
0
//插入节点
bool CServerListData::InsertGameNode(tagGameNode * pGameNode)
{
	//效验参数
	ASSERT(pGameNode!=NULL);
	if (pGameNode==NULL) return false;

	//变量定义
	CGameNodeItem * pGameNodeItem=NULL;
	bool bInsert=(m_GameNodeItemMap.Lookup(pGameNode->wNodeID,pGameNodeItem)==FALSE);

	//获取存储
	if (bInsert==true)
	{
		pGameNodeItem=new CGameNodeItem;
		if (pGameNodeItem==NULL) return false;
	}

	//设置数据
	CopyMemory(&pGameNodeItem->m_GameNode,pGameNode,sizeof(tagGameNode));

	//寻找父项
	if (pGameNode->wJoinID!=0)
	{
		pGameNodeItem->m_pParentListItem=SearchGameNode(pGameNode->wJoinID);
	}
	else
	{
		pGameNodeItem->m_pParentListItem=SearchGameKind(pGameNode->wKindID);
	}

	//待决判断
	if (pGameNodeItem->m_pParentListItem==NULL) 
	{
		m_GameListItemWait.Add(pGameNodeItem);
		return true;
	}

	//插入处理
	if (bInsert==true)
	{
		//设置索引
		m_GameNodeItemMap[pGameNode->wNodeID]=pGameNodeItem;

		//插入子项
		m_pIServerListDataSink->OnGameItemInsert(pGameNodeItem);
	}
	else 
	{
		//更新子项
		m_pIServerListDataSink->OnGameItemUpdate(pGameNodeItem);
	}

	return true;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
0
//设置人数
VOID CServerListData::SetKindOnLineCount(WORD wKindID, DWORD dwOnLineCount)
{
	//搜索类型
	CGameKindItem * pGameKindItem=SearchGameKind(wKindID);

	//设置人数
	if (pGameKindItem!=NULL)
	{
		//设置变量
		pGameKindItem->m_GameKind.dwOnLineCount=dwOnLineCount;

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

	return;
}
Exemplo n.º 4
0
//更新人数
void CServerListCenter::UpdateKindOnLineCount(WORD wKindID)
{
	tagGameKindItem * pGameKindItem=SearchGameKind(wKindID);
	if (pGameKindItem!=NULL)
	{
		POSITION Pos=NULL;
		DWORD dwKindAllLineCount=0L;
		tagGameServerItem * pGameServerItem=NULL;
		do
		{
			pGameServerItem=EmunGameServerItem(Pos);
			if (pGameServerItem==NULL) break;
			if (pGameServerItem->GameServer.wKindID==wKindID) dwKindAllLineCount+=pGameServerItem->GameServer.dwOnLineCount;
		} while (Pos!=NULL);
		pGameKindItem->GameKind.dwOnLineCount=dwKindAllLineCount;
	}

	return;
}
Exemplo n.º 5
0
//插入房间
bool CServerListData::InsertGameServer(tagGameServer * pGameServer)
{
	//效验参数
	ASSERT(pGameServer!=NULL);
	if (pGameServer==NULL) return false;

	//变量定义
	CGameServerItem * pGameServerItem=NULL;
	bool bInsert=(m_GameServerItemMap.Lookup(pGameServer->wServerID,pGameServerItem)==FALSE);

	//获取存储
	if (bInsert==true)
	{
		pGameServerItem=new CGameServerItem;
		if (pGameServerItem==NULL) return false;
	}

	//设置数据
	CopyMemory(&pGameServerItem->m_GameServer,pGameServer,sizeof(tagGameServer));
	m_dwAllOnLineCount += pGameServer->dwOnLineCount;

	//寻找父项
	if (pGameServer->wNodeID!=0)
	{
		pGameServerItem->m_pGameKindItem=SearchGameKind(pGameServer->wKindID);
		pGameServerItem->m_pParentListItem=SearchGameNode(pGameServer->wNodeID);
	}
	else
	{
		pGameServerItem->m_pGameKindItem=SearchGameKind(pGameServer->wKindID);
		pGameServerItem->m_pParentListItem=SearchGameKind(pGameServer->wKindID);
	}

	//查找类型
	if(bInsert==true && pGameServerItem->m_pGameKindItem)
	{
		//变量定义
		DWORD dwGameKindOnline=0;
		DWORD dwGameKindFullCount=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;
				dwGameKindFullCount += pGameServerItem2->m_GameServer.dwFullCount;
			}

		} while (Position!=NULL);

		//设置变量
		pGameServerItem->m_pGameKindItem->m_GameKind.dwOnLineCount = dwGameKindOnline;
		pGameServerItem->m_pGameKindItem->m_GameKind.dwFullCount = dwGameKindFullCount;

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

	//待决判断
	if (pGameServerItem->m_pParentListItem==NULL) 
	{
		m_GameListItemWait.Add(pGameServerItem);
		return true;
	}

	//插入处理
	if (bInsert==true)
	{
		//设置索引
		m_GameServerItemMap[pGameServer->wServerID]=pGameServerItem;

		//插入子项
		m_pIServerListDataSink->OnGameItemInsert(pGameServerItem);
	}
	else 
	{
		//更新子项
		m_pIServerListDataSink->OnGameItemUpdate(pGameServerItem);
	}

	return true;
}
Exemplo n.º 6
0
//插入类型
bool CServerListData::InsertGameKind(tagGameKind * pGameKind)
{
	//效验参数
	ASSERT(pGameKind!=NULL);
	if (pGameKind==NULL) return false;

	//变量定义
	CGameKindItem * pGameKindItem=NULL;
	bool bInsert=(m_GameKindItemMap.Lookup(pGameKind->wKindID,pGameKindItem)==FALSE);

	//获取存储
	if (bInsert==true)
	{
		pGameKindItem=new CGameKindItem;
		if (pGameKindItem==NULL) return false;
	}

	//获取版本
	if (bInsert==true)
	{
		LPCTSTR pszProcessName=pGameKind->szProcessName;
		CWHService::GetModuleVersion(pszProcessName,pGameKindItem->m_dwProcessVersion);
	}

	//设置数据
	CopyMemory(&pGameKindItem->m_GameKind,pGameKind,sizeof(tagGameKind));

	//寻找父项
	if (pGameKind->wJoinID!=0)
	{
		pGameKindItem->m_pParentListItem=SearchGameKind(pGameKind->wJoinID);
	}
	else
	{
		pGameKindItem->m_pParentListItem=SearchGameType(pGameKind->wTypeID);
	}

	m_GameKindItemMap[pGameKind->wKindID]=pGameKindItem;
	//待决判断
	if (pGameKindItem->m_pParentListItem==NULL) 
	{
		m_GameListItemWait.Add(pGameKindItem);
		return true;
	}

	//插入处理
 	if (bInsert==true)
 	{
 		//设置索引
 		m_GameKindItemMap[pGameKind->wKindID]=pGameKindItem;
 
// 		//插入子项
// 		m_pIServerListDataSink->OnGameItemInsert(pGameKindItem);
 	}
//	else
// 	{
// 		//更新子项
// 		m_pIServerListDataSink->OnGameItemUpdate(pGameKindItem);
// 	}

	return true;
}