Bazaar developer reference

CvCityBuildings::GetNumAvailableGreatWorkSlots(GreatWorkSlotType) const

Defined in
CvBuildingClasses.cpp, line 3184
Class
CvCityBuildings
Hook name
CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const

Hooks

static bool BeforeCvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const(const CvCityBuildings* self, GreatWorkSlotType eSlotType, int& result);static void AfterCvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const(const CvCityBuildings* self, GreatWorkSlotType eSlotType, int& result);static int ReplaceCvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const(int (*original)(const CvCityBuildings*, GreatWorkSlotType), const CvCityBuildings* self, GreatWorkSlotType eSlotType);CivRegisterBefore<CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const>(host, &BeforeCvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const);CivRegisterAfter<CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const>(host, &AfterCvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const);CivRegisterReplace<CivHooks::CvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const>(host, &ReplaceCvCityBuildings_GetNumAvailableGreatWorkSlots_with_GreatWorkSlotType_const);

Code

3183/// Accessor: How many Great Work slots of this type are in the city?3184int CvCityBuildings::GetNumAvailableGreatWorkSlots(GreatWorkSlotType eSlotType) const3185{3186	int iCount = 0;31873188	for(int iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)3189	{3190		BuildingClassTypes eLoopBuildingClass = (BuildingClassTypes) iI;3191		CvCivilizationInfo *pkCivInfo = GC.getCivilizationInfo(m_pCity->getCivilizationType());3192		if (pkCivInfo)3193		{3194			BuildingTypes eBuilding = (BuildingTypes)pkCivInfo->getCivilizationBuildings(eLoopBuildingClass);3195			if(NO_BUILDING != eBuilding)3196			{3197				if (GetNumBuilding(eBuilding) > 0)3198				{3199					CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);3200					if (pkBuilding)3201					{3202						if (pkBuilding->GetGreatWorkSlotType() == eSlotType)3203						{3204							int iNumSlots = pkBuilding->GetGreatWorkCount();3205							int iNumOpenSlots = iNumSlots - GetNumGreatWorksInBuilding(eLoopBuildingClass);3206							if(iNumOpenSlots > 0)3207							{3208								iCount += iNumOpenSlots;3209							}3210						}3211					}3212				}3213			}3214		}3215	}32163217	return iCount;3218}

Calls

Called by