代码拉取完成,页面将自动刷新
#include "StdAfx.h"
#include "GameMir.h"
CGameMir::CGameMap::CGameMap(LPCTSTR mapfile) :
m_File(mapfile,CFile::modeRead|CFile::typeBinary|CFile::shareDenyWrite),
m_Maps(NULL),
m_MapData(NULL)
{
m_MapName.clear();
m_File.Seek(0,CFile::begin);
m_File.Read(&m_Head,sizeof(m_Head));
if(strcmp(m_Head.CopyRight,"#TurboMir#")!=0)
{
AfxMessageBox("華芞跡宒渣昫!");
throw "華芞跡宒渣昫!";
}
if(m_Maps!=NULL)
delete[]m_Maps;
m_Maps=new MAP_INDEX[m_Head.IdxCount];
m_File.Read(m_Maps,sizeof(MAP_INDEX)*m_Head.IdxCount);
}
CGameMir::CGameMap::~CGameMap(void)
{
if(m_Maps!=NULL)
delete[]m_Maps;
}
void CGameMir::CGameMap::LoadMap(LPCTSTR mapname)
{
for(unsigned long i=0;i<m_Head.IdxCount;i++)
{
if(strcmp(m_Maps[i].MapEnName,mapname)==0)
{
m_File.Seek(m_Maps[i].Offset,CFile::begin);
char Id[3];
m_File.Read(Id,3);
if((Id[0]=='S')&&(Id[1]=='H')&&(Id[2]=='K'))
{
m_File.Read(&m_MapWidth,4);
m_File.Read(&m_MapHeight,4);
long ds=(m_MapWidth*m_MapHeight+7)>>3;
if(m_MapData!=NULL)
delete[]m_MapData;
m_MapData=new BYTE[ds];
m_File.Read(m_MapData,ds);
m_MapName=mapname;
return;
}
else
{
AfxMessageBox("華芞跡宒渣昫!");
}
}
}
AfxMessageBox("華芞樓婥囮啖!");
}
bool CGameMir::CGameMap::TestMap(long x, long y)
{
if (m_MapData==NULL)
{
return false;
}
if ( x>0 && y>0 && x<m_MapWidth && y<m_MapHeight)
{
BYTE bits;
long index = y * m_MapWidth + x ;
bits = (~index) & 0x07;
index >>= 3;
BYTE d=m_MapData[index];
d>>=bits;
return (d&1)!=0;
}
return false;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。