Bazaar developer reference

CvCityBuildings::GetNumAvailableGreatWorkSlots() const

Defined in
CvBuildingClasses.cpp, line 3150
Class
CvCityBuildings
Hook name
CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots

Hooks

static bool BeforeCvCityBuildings_GetNumAvailableGreatWorkSlots(const CvCityBuildings* self, int& result);static void AfterCvCityBuildings_GetNumAvailableGreatWorkSlots(const CvCityBuildings* self, int& result);static int ReplaceCvCityBuildings_GetNumAvailableGreatWorkSlots(int (*original)(const CvCityBuildings*), const CvCityBuildings* self);CivRegisterBefore<CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots>(host, &BeforeCvCityBuildings_GetNumAvailableGreatWorkSlots);CivRegisterAfter<CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots>(host, &AfterCvCityBuildings_GetNumAvailableGreatWorkSlots);CivRegisterReplace<CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots>(host, &ReplaceCvCityBuildings_GetNumAvailableGreatWorkSlots);

Code

3149/// Accessor: How many Great Work slots of this type are in the city?3150int CvCityBuildings::GetNumAvailableGreatWorkSlots() const3151{3152	int iCount = 0;31533154	for(int iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)3155	{3156		BuildingClassTypes eLoopBuildingClass = (BuildingClassTypes) iI;3157		CvCivilizationInfo *pkCivInfo = GC.getCivilizationInfo(m_pCity->getCivilizationType());3158		if (pkCivInfo)3159		{3160			BuildingTypes eBuilding = (BuildingTypes)pkCivInfo->getCivilizationBuildings(eLoopBuildingClass);3161			if(NO_BUILDING != eBuilding)3162			{3163				if (GetNumBuilding(eBuilding) > 0)3164				{3165					CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);3166					if (pkBuilding)3167					{3168						int iNumSlots = pkBuilding->GetGreatWorkCount();3169						int iNumOpenSlots = iNumSlots - GetNumGreatWorksInBuilding(eLoopBuildingClass);3170						if(iNumOpenSlots > 0)3171						{3172							iCount += iNumOpenSlots;3173						}3174					}3175				}3176			}3177		}3178	}31793180	return iCount;3181}

Calls

Called by