Bazaar developer reference

CvTacticalAI::NumUniqueUnitsLeft()

Defined in
CvTacticalAI.cpp, line 10992
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_NumUniqueUnitsLeft

Hooks

static bool BeforeCvTacticalAI_NumUniqueUnitsLeft(CvTacticalAI* self, int& result);static void AfterCvTacticalAI_NumUniqueUnitsLeft(CvTacticalAI* self, int& result);static int ReplaceCvTacticalAI_NumUniqueUnitsLeft(int (*original)(CvTacticalAI*), CvTacticalAI* self);CivRegisterBefore<CivHooks::CvTacticalAI_NumUniqueUnitsLeft>(host, &BeforeCvTacticalAI_NumUniqueUnitsLeft);CivRegisterAfter<CivHooks::CvTacticalAI_NumUniqueUnitsLeft>(host, &AfterCvTacticalAI_NumUniqueUnitsLeft);CivRegisterReplace<CivHooks::CvTacticalAI_NumUniqueUnitsLeft>(host, &ReplaceCvTacticalAI_NumUniqueUnitsLeft);

Code

10991/// How many units are left unassigned for a blocking position?10992int CvTacticalAI::NumUniqueUnitsLeft()10993{10994	int iRtnValue = 1;10995	int iCurrentID;1099610997	if(m_PotentialBlocks.size() < 2)10998	{10999		return m_PotentialBlocks.size();11000	}1100111002	// Copy data over and sort it so in unit ID order11003	m_TemporaryBlocks.clear();11004	m_TemporaryBlocks = m_PotentialBlocks;11005	std::stable_sort(m_TemporaryBlocks.begin(), m_TemporaryBlocks.end());1100611007	iCurrentID = m_TemporaryBlocks[0].GetUnitID();11008	for(unsigned int iI = 1; iI < m_TemporaryBlocks.size(); iI++)11009	{11010		if(m_TemporaryBlocks[iI].GetUnitID() != iCurrentID)11011		{11012			iRtnValue++;11013			iCurrentID = m_TemporaryBlocks[iI].GetUnitID();11014		}11015	}1101611017	return iRtnValue;11018}

Calls

Called by