Bazaar developer reference

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

Called by