⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usermanager.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
字号:
// UserManager.cpp: implementation of the CUserManager class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "UserManager.h"

#include "Scrp_exe.h"

///////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////////////////////////////////

CUserManager::CUserManager()
{
	m_hash.clear();
}

CUserManager::~CUserManager()
{
	m_hash.clear();

	while (!m_queue.empty())
	{
		m_queue.pop();
	}
}

///////////////////////////////////////////////////////////////////////////////
// Public Method
///////////////////////////////////////////////////////////////////////////////

void CUserManager::AddMember(WORD idUser)
{
	CHARLIST* pUser = ::CheckServerId(idUser);

	if (pUser == NULL)
	{
		MyLog(LOG_NORMAL, "CUserManager::AddNew : Character is NULL" );
		return;
	}

	ITOR_USER itor = m_hash.find(pUser->Name);

	if (itor != m_hash.end())
	{
		MyLog(LOG_NORMAL, "CUserManager::AddNew : Duplicate %s", pUser->Name);
		return;
	}

	m_hash.insert(PAIR_USER(pUser->Name, idUser));
}

void CUserManager::DelMember(WORD idUser)
{
	CHARLIST* pUser = ::CheckServerId(idUser);

	if (pUser == NULL)
	{
		MyLog(LOG_NORMAL, "CUserManager::Delete : Character is NULL");
		return;
	}

	ITOR_USER itor = m_hash.find(pUser->Name);

	if (itor != m_hash.end())
	{
		m_hash.erase(itor);	
	}
	else
	{
		MyLog(LOG_NORMAL, "CUserManager::Delete : Don't Exist %s", pUser->Name);
		return;
	}
}

void CUserManager::Push(MAP_MOVE_INFO infMapMove)
{
	m_queue.push(infMapMove);
}

void CUserManager::Execute()
{
	if (m_queue.empty())
	{
		return;
	}

	MAP_MOVE_INFO infMapMove = m_queue.front();
	::GotoMap(infMapMove.idUser, infMapMove.nMapPort, infMapMove.nX, infMapMove.nY);
	m_queue.pop();
}

void CUserManager::SendPacket(t_packet* pPacket)
{	//< CSD-031213
	for (ITOR_USER i = m_hash.begin(); i != m_hash.end(); ++i)
	{
		const int idUser = i->second;
	
		if (connections[idUser].dwAgentConnectionIndex == 0)
		{
			continue;
		}

		if (connections[idUser].state < CONNECT_JOIN)
		{
			continue;
		}

		::QueuePacket(connections, idUser, pPacket, 1);
	}
}	//> CSD-031213

CHARLIST* CUserManager::GetCharList(const char* pName)
{	//< CSD-031213
	ITOR_USER itFind = m_hash.find(pName);

	if (itFind != m_hash.end())
	{
		return ::CheckServerId(itFind->second);
	}

	return NULL;
}	//> CSD-031213

int CUserManager::GetServerID(const char* pName)
{	//< CSD-031213
	ITOR_USER itFind = m_hash.find(pName);

	if (itFind != m_hash.end())
	{
		return itFind->second;
	}

	return -1;
}	//> CSD-031213

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -