EconomicAIHelpers::IsAreaSafeForQuickColony(int, CvPlayer *)
- Defined in
- CvEconomicAI.cpp, line 3019
- Hook name
CivHooks::EconomicAIHelpers_IsAreaSafeForQuickColony
Hooks
static bool BeforeEconomicAIHelpers_IsAreaSafeForQuickColony(int iAreaID, CvPlayer* pPlayer, bool& result);static void AfterEconomicAIHelpers_IsAreaSafeForQuickColony(int iAreaID, CvPlayer* pPlayer, bool& result);static bool ReplaceEconomicAIHelpers_IsAreaSafeForQuickColony(bool (*original)(int, CvPlayer*), int iAreaID, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::EconomicAIHelpers_IsAreaSafeForQuickColony>(host, &BeforeEconomicAIHelpers_IsAreaSafeForQuickColony);CivRegisterAfter<CivHooks::EconomicAIHelpers_IsAreaSafeForQuickColony>(host, &AfterEconomicAIHelpers_IsAreaSafeForQuickColony);CivRegisterReplace<CivHooks::EconomicAIHelpers_IsAreaSafeForQuickColony>(host, &ReplaceEconomicAIHelpers_IsAreaSafeForQuickColony);
Code
3018/// Do we have an island clear of hostile units to settle on?3019bool EconomicAIHelpers::IsAreaSafeForQuickColony(int iAreaID, CvPlayer* pPlayer)3020{3021 if(iAreaID == -1)3022 {3023 return false;3024 }30253026 // Can't be capitals area3027 CvCity* pCapitalCity = pPlayer->getCapitalCity();3028 if(pCapitalCity != NULL)3029 {3030 if(iAreaID == pCapitalCity->getArea())3031 {3032 return false;3033 }3034 }30353036 CvArea* pArea = GC.getMap().getArea(iAreaID);3037 int iBeginSearchX = pArea->getAreaBoundaries().m_iWestEdge;3038 int iBeginSearchY = pArea->getAreaBoundaries().m_iSouthEdge;3039 int iEndSearchX = pArea->getAreaBoundaries().m_iEastEdge;3040 int iEndSearchY = pArea->getAreaBoundaries().m_iNorthEdge;30413042 for(int iPlotX = iBeginSearchX; iPlotX <= iEndSearchX; iPlotX++)3043 {3044 for(int iPlotY = iBeginSearchY; iPlotY <= iEndSearchY; iPlotY++)3045 {3046 CvPlot* pPlot = GC.getMap().plotCheckInvalid(iPlotX, iPlotY);3047 if(!pPlot)3048 {3049 continue;3050 }30513052 if(pPlot->getArea() != iAreaID)3053 {3054 continue;3055 }30563057 if(pPlot->isVisibleEnemyUnit(pPlayer->GetID()))3058 {3059 return false;3060 }3061 }3062 }3063 return true;3064}