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

📄 mapres.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
//code by xueliang 2005.5.12
#include "3dGameMap.h"
//const char szLoadFailed[] = "地图的资源配置文件%s,加载失败!";
//const char szLoadOk[]     = "地图的资源配置文件%s,加载成功!";

//-------------------------------------------------------------------------------------
CellRes* CGameMap::GetCellRes (DWORD x, DWORD y)
{
	__int64 i64Data = x;
	i64Data = (i64Data << 32) + y;
	
	MAP_CELLRES::iterator iter = m_setCellRes.find (i64Data);
	if (iter == m_setCellRes.end ())
		return NULL;
	else
		return iter->second;
}

void CGameMap::LoadMapRes(char* szFileName)
{
	if(!szFileName)
		return;
	char pszFileRes[MAX_PATH] = "";
	strncat(pszFileRes,szFileName,strlen(szFileName)-5);
	strcat(pszFileRes,".Mres");
	FILE* fp = fopen(pszFileRes, "r");
	if(!fp)
	{	
		/*char szMsg[256]="";
		sprintf(szMsg,szLoadFailed,pszFileRes);
		::MessageBox (NULL,szMsg,"提示!",0);*/
		return;
	}
	else
	{
		int nAmount =0;
		fscanf (fp,"ResAmount=%d",&nAmount);
		if (nAmount <=0)
			return;

		for(int i=0;i<nAmount;i++)
		{
			int nX, nY;
			DWORD idTmp;
			fscanf (fp,"Cell[%d,%d]=%d\n", &nX, &nY, &idTmp);
			this->PutCellRes (nX, nY,idTmp);
		}
		fclose(fp);
//		char szMsg[256]="";
//		sprintf(szMsg,szLoadOk,pszFileRes);
//		::MessageBox (NULL,szMsg,"提示!",0);
	}
}

void CGameMap::SaveMapRes(char* szFileName)
{
	if (!szFileName)
		return;
	char pszFileRes[MAX_PATH] ="";
	strncat (pszFileRes,szFileName,strlen(szFileName)-5);
	strcat (pszFileRes, ".Mres");

	FILE* fp = fopen(pszFileRes, "w");
	if(!fp)
		return;
	
	int nAmount = this->m_setCellRes.size ();
	if (nAmount <=0)
		return;
	// write amount ...
	fprintf(fp,"ResAmount=%d",nAmount);	
	// write cell resource
	MAP_CELLRES::iterator iter = m_setCellRes.begin ();
	while (iter != m_setCellRes.end ())
	{
		CellRes* pCellRes = iter->second;
		if (pCellRes) 
		{
			fprintf(fp,"Cell[%d,%d]=%d\n",pCellRes->X, pCellRes->Y,pCellRes->pResTmpID);
		}
		iter++;
	}

	fclose(fp);
}

void CGameMap::PutCellRes (DWORD x, DWORD y , DWORD idTmp)
{
	CellRes* pCellRes = this->GetCellRes (x, y);
	if (pCellRes) 
	{
		pCellRes->pResTmpID = idTmp;
	}
	else 
	{
		pCellRes = new CellRes;
		pCellRes->X = x;
		pCellRes->Y = y;
		pCellRes->pResTmpID = idTmp;		
		
		__int64 i64Data = x;
		i64Data = (i64Data << 32) + y;
		m_setCellRes.insert (MAP_CELLRES::value_type(i64Data,pCellRes));
	}
}

void CGameMap::ClearRes()
{
	MAP_CELLRES::iterator iter = m_setCellRes.begin ();
	while(iter != m_setCellRes.end ())
	{
		CellRes* pCellRes = iter->second;
		SAFE_DELETE(pCellRes);
		iter++;
	}
	m_setCellRes.clear ();
}

void CGameMap::DelCellRes (DWORD x, DWORD y)
{
	
	__int64 i64Data = x;
	i64Data = (i64Data << 32) + y;
	MAP_CELLRES::iterator iter = m_setCellRes.find (i64Data);
	
	if (iter != m_setCellRes.end ())
	{		
		CellRes* pCellRes = iter->second;
		SAFE_DELETE(pCellRes);
		m_setCellRes.erase(iter);
	}
}

void CGameMap::BuildMapResSql(const char* pszFileName, const char* pszTemplate)
{
	if(!pszFileName || !pszTemplate)
		return;
	int nAmount = m_setCellRes.size ();
	if (nAmount < 1 )
		return;
	FILE* fp = fopen(pszFileName, "w");	
	if(!fp)
		return;

	MAP_CELLRES::iterator iter = m_setCellRes.begin ();
	while(iter != m_setCellRes.end ())
	{
		CellRes* pCellRes = iter->second;
		if(pCellRes)
		{
			fprintf(fp, pszTemplate, pCellRes->X, pCellRes->Y, pCellRes->pResTmpID);
		}
		iter++;
	}
	fclose(fp);
}

⌨️ 快捷键说明

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