CvPlayer::GetClosestFriendlyCity(CvPlot &, int)
- Defined in
- CvPlayer.cpp, line 26755
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_GetClosestFriendlyCity
Hooks
static bool BeforeCvPlayer_GetClosestFriendlyCity(CvPlayer* self, CvPlot& plot, int iSearchRadius, CvCity*& result);static void AfterCvPlayer_GetClosestFriendlyCity(CvPlayer* self, CvPlot& plot, int iSearchRadius, CvCity*& result);static CvCity* ReplaceCvPlayer_GetClosestFriendlyCity(CvCity* (*original)(CvPlayer*, CvPlot&, int), CvPlayer* self, CvPlot& plot, int iSearchRadius);CivRegisterBefore<CivHooks::CvPlayer_GetClosestFriendlyCity>(host, &BeforeCvPlayer_GetClosestFriendlyCity);CivRegisterAfter<CivHooks::CvPlayer_GetClosestFriendlyCity>(host, &AfterCvPlayer_GetClosestFriendlyCity);CivRegisterReplace<CivHooks::CvPlayer_GetClosestFriendlyCity>(host, &ReplaceCvPlayer_GetClosestFriendlyCity);
Code
26754/// Find closest city to a plot (within specified search radius)26755CvCity* CvPlayer::GetClosestFriendlyCity(CvPlot& plot, int iSearchRadius)26756{26757 CvCity* pClosestCity = NULL;26758 CvCity* pLoopCity;26759 int iBestDistance = INT_MAX;2676026761 int iLoop;26762 for(pLoopCity = firstCity(&iLoop); pLoopCity != NULL; pLoopCity = nextCity(&iLoop))26763 {26764 int iDistance = plotDistance(plot.getX(), plot.getY(), pLoopCity->getX(), pLoopCity->getY());26765 if(iDistance < iBestDistance && iDistance <= iSearchRadius)26766 {26767 pClosestCity = pLoopCity;26768 iBestDistance = iDistance;26769 }26770 }2677126772 return pClosestCity;26773}