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
- CvBuildingEntry::GetGreatWorkCount() const
- CvBuildingEntry::GetGreatWorkSlotType() const
- CvCity::getCivilizationType() const
- CvCityBuildings::GetNumBuilding(BuildingTypes) const
- CvCityBuildings::GetNumGreatWorksInBuilding(BuildingClassTypes) const
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getCivilizationInfo(CivilizationTypes)
- CvGlobals::getNumBuildingClassInfos()