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

📄 usermanager.cpp

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 CPP
字号:
// UserManager.cpp: implementation of the CUserManager class.
//
//////////////////////////////////////////////////////////////////////

#include "windows.h"
#include "UserManager.h"
#include "User.h"
#include "GameMap.h"
#include "NpcWorld.h"
#include "iniFIle.h"

CUserManager::SIZEADD_SET		CUserManager::m_setSizeAdd;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CUserManager::CUserManager()
{
	m_pUserSet	= CUserSet::CreateNew(true);
}

//////////////////////////////////////////////////////////////////////
CUserManager::~CUserManager()
{
	if(m_pUserSet)
		m_pUserSet->Release();
}

//////////////////////////////////////////////////////////////////////
bool CUserManager::Create()
{
	CHECKF(m_pUserSet);

	CIniFile	ini("ini\\AdditiveSize.ini", "Header");
	int	nAmount	= ini.GetInt("Amount");
	for(int i = 0; i < nAmount; i++)
	{
		char	key[256];
		sprintf(key, "Index%d", i);
		ini.SetSection("Header");
		int	nLook = ini.GetInt(key);
		if(nLook)
		{
			char	look[256];
			sprintf(look, "Transform%d", nLook);
			ini.SetSection(look);
			int nSizeAdd = ini.GetInt("AdditiveSize");
			m_setSizeAdd[nLook] = nSizeAdd;
		}
	}

	return true;
}

//////////////////////////////////////////////////////////////////////
void CUserManager::OnTimer(DWORD nCurr)
{
	for(int i = QuerySet()->GetAmount()-1; i >= 0; i--)		// 倒排,可能删除对象
	{
		CUserPtr pUser = QuerySet()->GetObjByIndex(i);
		if(pUser)
			pUser->OnTimer();		// 可能删除玩家
	}
}

//////////////////////////////////////////////////////////////////////
IRole* CUserManager::QueryRole(OBJID idRole)
{
	if(IsSceneID(idRole))
	{
		return NULL;
	}
	else if(IsNpcID(idRole))
	{
		CNpcPtr pNpc = NpcManager()->QueryNpc(idRole);
		if(pNpc)
			return pNpc->QueryRole();
	}
	else
	{
		CUserPtr pUser = QueryUser(idRole); 	//@ 自动转换,不好
		if(pUser)
			return pUser->QueryRole();

		CNpcPtr pNpc = NpcManager()->QueryNpc(idRole);
		if(pNpc)
			return pNpc->QueryRole();
	}

	return NULL;
}

//////////////////////////////////////////////////////////////////////
int CUserManager::GetSizeAdd(int nLook)
{
	SIZEADD_SET::iterator	iter = m_setSizeAdd.find(nLook);
	if(iter != m_setSizeAdd.end())
		return iter->second;

	return 0;		// default size_add
}

//////////////////////////////////////////////////////////////////////
CUser* CUserManager::QueryUser(LPCTSTR szUser)
{
	CUserSet::Iterator	pUser = m_pUserSet->NewEnum();
	while(pUser.Next())
	{
		if(pUser && strcmp(pUser->GetName(), szUser) == 0)
			return pUser;
	}
	return NULL;
}






⌨️ 快捷键说明

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