Bazaar developer reference

CvTacticalAI::FindCitiesWithinStrikingDistance(CvPlot *)

Defined in
CvTacticalAI.cpp, line 9250
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_FindCitiesWithinStrikingDistance

Hooks

static bool BeforeCvTacticalAI_FindCitiesWithinStrikingDistance(CvTacticalAI* self, CvPlot* pTargetPlot, bool& result);static void AfterCvTacticalAI_FindCitiesWithinStrikingDistance(CvTacticalAI* self, CvPlot* pTargetPlot, bool& result);static bool ReplaceCvTacticalAI_FindCitiesWithinStrikingDistance(bool (*original)(CvTacticalAI*, CvPlot*), CvTacticalAI* self, CvPlot* pTargetPlot);CivRegisterBefore<CivHooks::CvTacticalAI_FindCitiesWithinStrikingDistance>(host, &BeforeCvTacticalAI_FindCitiesWithinStrikingDistance);CivRegisterAfter<CivHooks::CvTacticalAI_FindCitiesWithinStrikingDistance>(host, &AfterCvTacticalAI_FindCitiesWithinStrikingDistance);CivRegisterReplace<CivHooks::CvTacticalAI_FindCitiesWithinStrikingDistance>(host, &ReplaceCvTacticalAI_FindCitiesWithinStrikingDistance);

Code

9249/// Fills m_CurrentMoveCities with all cities within bombard range of a target (returns TRUE if 1 or more found)9250bool CvTacticalAI::FindCitiesWithinStrikingDistance(CvPlot* pTargetPlot)9251{9252	list<int>::iterator it;9253	CvCity* pLoopCity;9254	int iLoop;92559256	bool rtnValue = false;9257	m_CurrentMoveCities.clear();92589259	// Loop through all of our cities9260	for(pLoopCity = m_pPlayer->firstCity(&iLoop); pLoopCity != NULL; pLoopCity = m_pPlayer->nextCity(&iLoop))9261	{9262		if(pLoopCity->canRangeStrikeAt(pTargetPlot->getX(), pTargetPlot->getY()) && !IsCityInQueuedAttack(pLoopCity))9263		{9264			CvTacticalCity city;9265			city.SetID(pLoopCity->GetID());9266			m_CurrentMoveCities.push_back(city);9267			rtnValue = true;9268		}9269	}92709271	// Now sort them in the order we'd like them to attack9272	std::stable_sort(m_CurrentMoveCities.begin(), m_CurrentMoveCities.end());92739274	return rtnValue;9275}

Calls

Called by