CvTacticalAI::NearVisibleEnemy(UnitHandle, int)
- Defined in
- CvTacticalAI.cpp, line 10405
- Class
- CvTacticalAI
- Hook name
CivHooks::CvTacticalAI_NearVisibleEnemy
Hooks
static bool BeforeCvTacticalAI_NearVisibleEnemy(CvTacticalAI* self, UnitHandle pUnit, int iRange, bool& result);static void AfterCvTacticalAI_NearVisibleEnemy(CvTacticalAI* self, UnitHandle pUnit, int iRange, bool& result);static bool ReplaceCvTacticalAI_NearVisibleEnemy(bool (*original)(CvTacticalAI*, UnitHandle, int), CvTacticalAI* self, UnitHandle pUnit, int iRange);CivRegisterBefore<CivHooks::CvTacticalAI_NearVisibleEnemy>(host, &BeforeCvTacticalAI_NearVisibleEnemy);CivRegisterAfter<CivHooks::CvTacticalAI_NearVisibleEnemy>(host, &AfterCvTacticalAI_NearVisibleEnemy);CivRegisterReplace<CivHooks::CvTacticalAI_NearVisibleEnemy>(host, &ReplaceCvTacticalAI_NearVisibleEnemy);
Code
10404/// Am I within range of an enemy?10405bool CvTacticalAI::NearVisibleEnemy(UnitHandle pUnit, int iRange)10406{10407 UnitHandle pLoopUnit;10408 CvCity* pLoopCity = NULL;10409 int iLoop;1041010411 // Loop through enemies10412 for(int iI = 0; iI < MAX_PLAYERS; iI++)10413 {10414 CvPlayerAI& kPlayer = GET_PLAYER((PlayerTypes)iI);10415 if(kPlayer.isAlive() && atWar(kPlayer.getTeam(), m_pPlayer->getTeam()))10416 {10417 // Loop through their units10418 for(pLoopUnit = kPlayer.firstUnit(&iLoop); pLoopUnit; pLoopUnit = kPlayer.nextUnit(&iLoop))10419 {10420 // Make sure this tile is visible to us10421 if(pLoopUnit->plot()->isVisible(m_pPlayer->getTeam()))10422 {10423 // Check distance10424 if(plotDistance(pLoopUnit->getX(), pLoopUnit->getY(), pUnit->getX(), pUnit->getY()) <= iRange)10425 {10426 return true;10427 }10428 }10429 }1043010431 // Loop through their cities10432 for(pLoopCity = kPlayer.firstCity(&iLoop); pLoopCity != NULL; pLoopCity = kPlayer.nextCity(&iLoop))10433 {10434 // Make sure this tile is visible to us10435 if(pLoopCity->plot()->isVisible(m_pPlayer->getTeam()))10436 {10437 // Check distance10438 if(plotDistance(pLoopCity->getX(), pLoopCity->getY(), pUnit->getX(), pUnit->getY()) <= iRange)10439 {10440 return true;10441 }10442 }10443 }10444 }10445 }10446 return false;10447}
Calls
- atWar(TeamTypes, TeamTypes)
- CvCity::getX() const
- CvCity::getY() const
- CvCity::plot() const
- CvPlayer::firstCity(int *, bool)
- CvPlayer::firstUnit(int *, bool)
- CvPlayer::getTeam() const
- CvPlayer::isAlive() const
- CvPlayer::nextCity(int *, bool)
- CvPlayer::nextUnit(int *, bool)
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlot::isVisible(TeamTypes) const
- CvUnit::getX() const
- CvUnit::getY() const
- CvUnit::plot() const
FObjectHandle::FObjectHandleFObjectHandle::operator boolFObjectHandle::operator->FObjectHandle::operator=- plotDistance(int, int, int, int)