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

📄 mapmanager.cpp

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

#include "windows.h"
#include "MapManager.h"
#include "NpcWorld.h"
#include "GameMap.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMapManager::CMapManager()
{
	m_pMapSet = CGameMapSet::CreateNew(true);		// true : owner
}

//////////////////////////////////////////////////////////////////////
CMapManager::~CMapManager()
{
	if(m_pMapSet)
		m_pMapSet->Release();

//	CGameMapData::Final();
}

//////////////////////////////////////////////////////////////////////
bool CMapManager::Create()
{
	CHECKF(m_pMapSet);

//	if(!CGameMapData::Init(NpcWorld()->GetDatabase()))
//		return false;

	char szSQL[1024];
	sprintf(szSQL, "SELECT * FROM %s LIMIT 1234567890", _TBL_MAP);
	IRecordset* pRes = NpcWorld()->GetDatabase()->CreateNewRecordset(szSQL);
	if(!pRes)
		return false;

	for(int i = 0; i < pRes->RecordCount(); i++, pRes->MoveNext())
	{
		CMapPtr pMap = CGameMap::CreateNew();
		if(!pMap)
		{
			pRes->Release();
			return false;
		}

#ifdef	PALED_DEBUG
		if(pRes->GetInt(0) == 1041 || pRes->GetInt(0)>=1060 && pRes->GetInt(0)<=1062)		//? 不加载“昆仑迷宫”,慢:(
		{
			pMap->ReleaseByOwner();
			continue;	// szSQL[0]=0;//
		}
#endif
		if(!pMap->Create(pRes))
		{
			pMap->ReleaseByOwner();
#ifdef	LOCAL_DEBUG
			NpcWorld()->PrintText("Can't init a map data!");
			continue;
#endif
			pRes->Release();
			return false;
		}

		m_pMapSet->AddObj(pMap);
	}

	pRes->Release();
	return true;
}

//////////////////////////////////////////////////////////////////////
CGameMap* CMapManager::QueryMap(OBJID idMap)
{
	CHECKF(idMap != ID_NONE);

	for(int i = 0; i < m_pMapSet->GetAmount(); i++)
	{
		CMapPtr pMap = m_pMapSet->GetObjByIndex(i);
		if(pMap && pMap->GetID() == idMap)
		{
			return pMap;
		}
	}

	// load dyna map
	SQLBUF	szSQL;
	sprintf(szSQL, "SELECT * FROM %s WHERE id=%u && del_flag=0 LIMIT 1", _TBL_DYNAMAP, idMap);
	CAutoPtr<IRecordset> pRes = NpcWorld()->GetDatabase()->CreateNewRecordset(szSQL);
	if(pRes)
	{
		CMapPtr pMap = CGameMap::CreateNew();
		if(!pMap)
		{
			return NULL;
		}

		IF_NOT(pMap->Create(pRes))
		{
			pMap->ReleaseByOwner();
#ifdef	LOCAL_DEBUG
			NpcWorld()->PrintText("Can't init a dyna map data!");
#endif
			return NULL;
		}

		m_pMapSet->AddObj(pMap);
		return pMap;
	}

	return NULL;
}

//////////////////////////////////////////////////////////////////////
void CMapManager::OnTimer(DWORD nCurr)
{

}


⌨️ 快捷键说明

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