#include "PieceTemplatePathVerifier.h" #include "memory.h" //------------------------------------------------------------------------------ CPieceTemplatePathVerifier::CPieceTemplatePathVerifier( int iMapID, int iSizeX, int iSizeY, unsigned int** ppuiMapInfo, const uint64* pMap) : CPathVerifier(iMapID, iSizeX, iSizeY, ppuiMapInfo), m_pMap(pMap) { m_iNumPiecesX = m_iSizeX / MAP_PIECE_DIM; // 除8 m_iNumPiecesY = m_iSizeY / MAP_PIECE_DIM; m_pAccTempGen = CMapAccessTemplateGenerator::GetInstance(); } //------------------------------------------------------------------------------ CPieceTemplatePathVerifier::~CPieceTemplatePathVerifier(void) { } //------------------------------------------------------------------------------ void CPieceTemplatePathVerifier::MapToPieceBlock(int iSizeX, int iSizeY, const unsigned int* piOrigMap, uint64* pMapInPieceBlock) { assert (piOrigMap != 0 && pMapInPieceBlock != 0); int iNumPieceX = iSizeX / MAP_PIECE_DIM; int iNumPieceY = iSizeY / MAP_PIECE_DIM; memset(pMapInPieceBlock, 0, iNumPieceX*iNumPieceY*sizeof(uint64)); // 按顺序遍历每个 piece int iOffsetX = 0; // 每个 piece 首 grid 相对于原点的偏移 int iOffsetY = 0; int iPieceID = 0; // piece 在整个地图中的 ID for (int i=0; i