Hooks
static bool BeforeCvMap_reset(CvMap* self, CvMapInitData* pInitInfo);static void AfterCvMap_reset(CvMap* self, CvMapInitData* pInitInfo);static void ReplaceCvMap_reset(void (*original)(CvMap*, CvMapInitData*), CvMap* self, CvMapInitData* pInitInfo);CivRegisterBefore<CivHooks::CvMap_reset>(host, &BeforeCvMap_reset);CivRegisterAfter<CivHooks::CvMap_reset>(host, &AfterCvMap_reset);CivRegisterReplace<CivHooks::CvMap_reset>(host, &ReplaceCvMap_reset);
Code
402// FUNCTION: reset()403// Initializes data members that are serialized.404void CvMap::reset(CvMapInitData* pInitInfo)405{406 //--------------------------------407 // Uninit class408 uninit();409410 m_iAIMapHints = 0;411 //412 // set grid size413 // initially set in terrain cell units414 //415 m_iGridWidth = (CvPreGame::worldSize() != NO_WORLDSIZE) ? getWorldInfo().getGridWidth(): 0; //todotw:tcells wide416 m_iGridHeight = (CvPreGame::worldSize() != NO_WORLDSIZE) ? getWorldInfo().getGridHeight(): 0;417418 // allow grid size override419 if(pInitInfo)420 {421 m_iGridWidth = pInitInfo->m_iGridW;422 m_iGridHeight = pInitInfo->m_iGridH;423 }424425 m_iGridSize = m_iGridHeight * m_iGridWidth;426 m_iLandPlots = 0;427 m_iOwnedPlots = 0;428 m_iNumNaturalWonders = 0;429430 if(pInitInfo)431 {432 m_iTopLatitude = pInitInfo->m_iTopLatitude;433 m_iBottomLatitude = pInitInfo->m_iBottomLatitude;434 }435436 m_iTopLatitude = std::min(m_iTopLatitude, 90);437 m_iTopLatitude = std::max(m_iTopLatitude, -90);438 m_iBottomLatitude = std::min(m_iBottomLatitude, 90);439 m_iBottomLatitude = std::max(m_iBottomLatitude, -90);440441 //442 // set wrapping443 //444 m_bWrapX = true;445 m_bWrapY = false;446447 CoCreateGuid(&m_guid);448449 if(pInitInfo)450 {451 m_bWrapX = pInitInfo->m_bWrapX;452 m_bWrapY = pInitInfo->m_bWrapY;453 }454455 int iNumResourceInfos = GC.getNumResourceInfos();456 if(iNumResourceInfos)457 {458 CvAssertMsg((0 < GC.getNumResourceInfos()), "GC.getNumResourceInfos() is not greater than zero but an array is being allocated in CvMap::reset");459 CvAssertMsg(m_paiNumResource==NULL, "mem leak m_paiNumResource");460 m_paiNumResource = FNEW(int[iNumResourceInfos], c_eCiv5GameplayDLL, 0);461 CvAssertMsg(m_paiNumResourceOnLand==NULL, "mem leak m_paiNumResourceOnLand");462 m_paiNumResourceOnLand = FNEW(int[iNumResourceInfos], c_eCiv5GameplayDLL, 0);463 for(int iI = 0; iI < iNumResourceInfos; iI++)464 {465 m_paiNumResource[iI] = 0;466 m_paiNumResourceOnLand[iI] = 0;467 }468 }469470 m_areas.RemoveAll();471 m_landmasses.RemoveAll();472473 m_vDeferredFogPlots.clear();474475 gDLL->DoMapSetup(numPlots());476}