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

📄 mhmap.cpp

📁 墨香最新私服
💻 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 + -