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

📄 mirgamemap.cpp

📁 传2机器人源代码VC
💻 CPP
字号:
// MirGameMap.cpp: implementation of the CMirGameMap class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MirRobot.h"
#include "MirGameMap.h"
#include "MainFrm.h"
#include "ChildView.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

CMirGameMap::CMirGameMap()
{
	memset(&m_Header,0,sizeof(m_Header));
	m_pData=NULL;
}

CMirGameMap::~CMirGameMap()
{
	if(m_pData!=NULL)
		delete	[]m_pData;
}

BOOL CMirGameMap::TestMap(int x, int y)
{
	if(x>=m_Header.width || y>=m_Header.height || x<0 || y<0 )
	{
		return FALSE;
	}
	if(m_pData==NULL )
		return TRUE;
	if(m_pData[x*m_Header.height+y].tile & 0x8000 )
	{
		return FALSE;
	}

	return TRUE;
}

void CMirGameMap::SetPersonInfo(DWORD x, DWORD y, DWORD dir)
{
	m_xpos = x;
	m_ypos = y;
	//m_dir = dir;
}

BOOL CMirGameMap::SetGameMap(LPCTSTR mapname, DWORD x, DWORD y)
{
	if( m_pData != NULL )
		delete	[]m_pData;
	m_pData = Loadmap( mapname );
	if( m_pData == NULL )
		return FALSE;
	m_xpos = x;
	m_ypos = y;
	m_mapname=mapname;
	return TRUE;
}

MIRMAPBLOCK* CMirGameMap::Loadmap(LPCTSTR map)
{
	char tmpFilename[256];
	FILE * fpmap=NULL;
	MIRMAPBLOCK*pdata = NULL;
	DWORD dsize=0;
	sprintf(tmpFilename,"%s.map",map);
	fpmap=fopen(tmpFilename,"rb");
	if(fpmap==NULL)
	{
		sprintf(tmpFilename,"map\\%s.map",map);
		fpmap=fopen(tmpFilename,"rb");
		if(fpmap==NULL)
		{
			//MessageBox(0,"未发现传奇地图信息,自动寻路功能和怪物行动预测功能将无法使用。", "提示", 0 );
			return NULL;
		}
	}
	
	fread(&m_Header,sizeof(MIRMAPHEADER),1,fpmap);

	if(m_Header.height==0||m_Header.width==0)
		return NULL;

	dsize=m_Header.width;
	dsize*=m_Header.height;

	pdata=new MIRMAPBLOCK[dsize];
	if(pdata==NULL)
		return NULL;

	fread((void*)pdata,dsize*sizeof(MIRMAPBLOCK),1,fpmap);

	fclose(fpmap);

	// 载入地图数据成功
	return pdata;
}

CPoint CMirGameMap::GetPersonInfo()
{
	return CPoint(m_xpos,m_ypos);
}

CSize CMirGameMap::GetMapSize()
{
	return CSize(m_Header.width,m_Header.height);
}

CString CMirGameMap::GetMapname()
{
	return m_mapname;
}

⌨️ 快捷键说明

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