📄 mhmap.cpp
字号:
// MHMap.cpp: implementation of the CMHMap class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MHMap.h"
#include "TileManager.h"
#include "MHFile.h"
extern int g_nServerSetNum;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMHMap::CMHMap()
{
m_pTileManager = NULL;
}
CMHMap::~CMHMap()
{
}
void CMHMap::InitMap( MAPTYPE MapNum )
{
m_pTileManager = new CTileManager;
TileNameSetting(); // ŸÀÏ À̸§ ¼ÂÆÃ
char MapFile[64];
strcpy(MapFile, m_szTileName[MapNum]);
m_pTileManager->LoadFixedTileInfo(MapNum, MapFile);
//KES 040712 MapServerDesc
char filename[256];
sprintf(filename,"serverset/%d/MapServerDesc.txt",g_nServerSetNum);
LoadMapServerDesc( filename, MapNum );
}
void CMHMap::LoadMapServerDesc( char* strFileName, MAPTYPE MapNum )
{
m_msDesc.MapNum = MapNum;
char buf[256];
CMHFile file;
if( file.Init( strFileName,"rt", MHFILE_FLAG_DONOTDISPLAY_NOTFOUNDERROR ) )
{
while(1)
{
if( file.IsEOF() )
break;
file.GetString( buf );
if( strcmp( buf, "$MAPNUM" ) == 0 )
{
if( file.GetWord() != MapNum )
continue;
file.GetLine( buf, 256 );
file.GetString( buf );
if( buf[0] == '{' )
{
file.GetLine( buf, 256 );
while(1)
{
if( file.IsEOF() )
break;
file.GetString( buf );
if( strcmp( buf, "*VILLAGE" ) == 0 )
{
m_msDesc.bVillage = file.GetBool();
}
else if( strcmp( buf, "*PKALLOW" ) == 0 )
{
m_msDesc.bPKAllow = file.GetBool();
}
else if( buf[0] == '}' )
break;
}
}
break;
}
}
file.Release();
}
}
void CMHMap::TileNameSetting()
{
for(int i = 0; i < MAX_MAP_NUM; i++)
{
memset(m_szTileName[i], 0, sizeof(MAX_FILE_NAME));
sprintf(m_szTileName[i], "Resource/%d.ttb",i);
}
}
void CMHMap::Release()
{
SAFE_DELETE(m_pTileManager);
}
int CMHMap::GetTileWidth(MAPTYPE MapNum)
{
if(m_pTileManager == NULL)
return 0;
return m_pTileManager->GetTileWidth(MapNum);
}
BOOL CMHMap::CollisionLine(VECTOR3* pStart,VECTOR3* pEnd, VECTOR3* Target, CObject* pObject)
{
if(m_pTileManager == NULL)
return FALSE;
return m_pTileManager->CollisionLine(pStart, pEnd, Target, pObject);
}
BOOL CMHMap::IsInTile(int cellX, int cellY, CObject* pObject)
{
if(m_pTileManager == NULL)
return FALSE;
if(m_pTileManager->IsInTile(cellX, cellY, pObject))
{
return TRUE;
}
return FALSE;
}
BOOL CMHMap::CollisionTileCell(int x, int y, CObject* pObject)
{
if(m_pTileManager == NULL)
return FALSE;
if(m_pTileManager->CollisionTileWithTileIndex(x, y, pObject))
{
return FALSE;
}
return TRUE;
}
BOOL CMHMap::CollisionTilePos(float x, float y, CObject* pObject)
{
if(m_pTileManager == NULL)
return FALSE;
if(m_pTileManager->CollisionTileWithPosition(x, y, pObject))
{
return TRUE;
}
return FALSE;
}
BOOL CMHMap::CollisionTilePos(float x, float y, MAPTYPE MapNum)
{
if(m_pTileManager == NULL)
return FALSE;
if(m_pTileManager->CollisionTileWithPosition(x, y, MapNum))
{
return TRUE;
}
return FALSE;
}
BOOL CMHMap::CollisionCheck(VECTOR3* pStart,VECTOR3* pEnd,VECTOR3* pRtCollisonPos, CObject* pObject)
{
if(m_pTileManager == NULL)
return FALSE;
if(m_pTileManager->CollisionCheck(pStart,pEnd,pRtCollisonPos, pObject) == TRUE)
return TRUE;
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -