📄 pathmanager.cpp
字号:
// PathManager.cpp: implementation of the CPathManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "PathManager.h"
#include "..\[CC]Header\GameResourceManager.h"
#include "STRPath.h"
#include "MHMap.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CPathManager);
CPathManager::CPathManager()
{
m_pSTRPath = new CSTRPath;
m_pMap = NULL;
}
CPathManager::~CPathManager()
{
delete m_pSTRPath;
}
void CPathManager::SetMap(CMHMap * pMap, MAPTYPE mapNum, int width)
{
m_pMap = pMap;
m_MapType = mapNum;
m_pSTRPath->SetWidth(width);
}
int CPathManager::GetPath(VECTOR3 * pSrcPos, VECTOR3 * pDestPos, VECTOR3 * pWayPointPos, WORD wBufCount, BYTE& wWayPointNum, CObject* pObject, BOOL bReverse, WORD wDepth)
{
VECTOR3 TargetPos;
// 鸥百 瘤痢捞 捞悼且 荐 乐绰 镑牢啊?
if(m_pMap->CollisionTilePos(pDestPos->x, pDestPos->z, pObject))
{
// 捞悼且 荐 乐绰 弥窜 困摹 拌魂
if(m_pMap->CollisionLine(pSrcPos, pDestPos, &TargetPos, pObject))
{
pWayPointPos[0] = TargetPos; wWayPointNum = 1;
if(m_pMap->CollisionTilePos(TargetPos.x, TargetPos.z, pObject))
{
return PATH_FAILED;
}
return PATH_SUCCESS;
}
else
{
return PATH_FAILED;
}
}
// 鸥百 捞悼 且 荐 乐促搁 鸥百鳖瘤 流急 芭府 牢啊?
if(!m_pMap->CollisionLine(pSrcPos, pDestPos, &TargetPos, pObject))
{
pWayPointPos[0] = TargetPos; wWayPointNum = 1;
return PATH_SUCCESS;
}
// 流急捞 酒聪搁 辨茫扁
m_pSTRPath->IsValidNode = CPathManager::ValidFunc;
if(!m_pSTRPath->FindPath(pObject,pSrcPos, pDestPos, pWayPointPos, wBufCount, wWayPointNum, wDepth))
{
if(bReverse)
{
return PATH_BLOCKFAILED;
}
else
{
// 捞悼且 荐 乐绰 弥窜 困摹 拌魂
if(m_pMap->CollisionLine(pSrcPos, pDestPos, &TargetPos, pObject))
{
pWayPointPos[0] = TargetPos; wWayPointNum = 1;
return PATH_SUCCESS;
}
else
{
return PATH_FAILED;
}
}
}
return PATH_SUCCESS;
}
BOOL CPathManager::ValidFunc(int cellX, int cellY,CObject* pObject)
{
if(!PATHMGR->m_pMap->IsInTile(cellX, cellY, pObject))
return FALSE;
if(!PATHMGR->m_pMap->CollisionTileCell(cellX, cellY, pObject))
return FALSE;
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -