📄 mirgamemap.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 + -