CvPlayer::GetNumMaintenanceFreeUnits(DomainTypes, bool) const
- Defined in
- CvPlayer.cpp, line 15588
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_GetNumMaintenanceFreeUnits
Hooks
static bool BeforeCvPlayer_GetNumMaintenanceFreeUnits(const CvPlayer* self, DomainTypes eDomain, bool bOnlyCombatUnits, int& result);static void AfterCvPlayer_GetNumMaintenanceFreeUnits(const CvPlayer* self, DomainTypes eDomain, bool bOnlyCombatUnits, int& result);static int ReplaceCvPlayer_GetNumMaintenanceFreeUnits(int (*original)(const CvPlayer*, DomainTypes, bool), const CvPlayer* self, DomainTypes eDomain, bool bOnlyCombatUnits);CivRegisterBefore<CivHooks::CvPlayer_GetNumMaintenanceFreeUnits>(host, &BeforeCvPlayer_GetNumMaintenanceFreeUnits);CivRegisterAfter<CivHooks::CvPlayer_GetNumMaintenanceFreeUnits>(host, &AfterCvPlayer_GetNumMaintenanceFreeUnits);CivRegisterReplace<CivHooks::CvPlayer_GetNumMaintenanceFreeUnits>(host, &ReplaceCvPlayer_GetNumMaintenanceFreeUnits);
Code
15588int CvPlayer::GetNumMaintenanceFreeUnits(DomainTypes eDomain, bool bOnlyCombatUnits) const15589{15590 int iNumFreeUnits = 0;1559115592 // Loop through all units to see if any of them are free!15593 const CvUnit* pLoopUnit;15594 int iLoop;15595 for(pLoopUnit = firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = nextUnit(&iLoop))15596 {15597 if (eDomain != NO_DOMAIN)15598 {15599 if (pLoopUnit->getDomainType() != eDomain)15600 {15601 continue;15602 }15603 }1560415605 if (bOnlyCombatUnits)15606 {15607 if (!pLoopUnit->IsCombatUnit())15608 {15609 continue;15610 }15611 }1561215613 if(pLoopUnit->getUnitInfo().IsNoMaintenance())15614 {15615 iNumFreeUnits++;15616 }15617 else if(IsGarrisonFreeMaintenance() && pLoopUnit->IsGarrisoned())15618 {15619 iNumFreeUnits++;15620 }15621 }1562215623 return iNumFreeUnits;15624}