Bazaar developer reference

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}

Calls

Called by