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
BaseVector::beginBaseVector::clearBaseVector::endBaseVector::operator[]BaseVector::size- CvBlockingUnit::GetUnitID() const
FStaticVector::operator=std::stable_sort