Bazaar developer reference

CvCityBuildings::GetNextAvailableGreatWorkSlot(BuildingClassTypes *, int *) const

Defined in
CvBuildingClasses.cpp, line 3221
Class
CvCityBuildings
Hook name
CivHooks::CvCityBuildings_GetNextAvailableGreatWorkSlot

Hooks

static bool BeforeCvCityBuildings_GetNextAvailableGreatWorkSlot(const CvCityBuildings* self, BuildingClassTypes * eBuildingClass, int * iSlot, bool& result);static void AfterCvCityBuildings_GetNextAvailableGreatWorkSlot(const CvCityBuildings* self, BuildingClassTypes * eBuildingClass, int * iSlot, bool& result);static bool ReplaceCvCityBuildings_GetNextAvailableGreatWorkSlot(bool (*original)(const CvCityBuildings*, BuildingClassTypes *, int *), const CvCityBuildings* self, BuildingClassTypes * eBuildingClass, int * iSlot);CivRegisterBefore<CivHooks::CvCityBuildings_GetNextAvailableGreatWorkSlot>(host, &BeforeCvCityBuildings_GetNextAvailableGreatWorkSlot);CivRegisterAfter<CivHooks::CvCityBuildings_GetNextAvailableGreatWorkSlot>(host, &AfterCvCityBuildings_GetNextAvailableGreatWorkSlot);CivRegisterReplace<CivHooks::CvCityBuildings_GetNextAvailableGreatWorkSlot>(host, &ReplaceCvCityBuildings_GetNextAvailableGreatWorkSlot);

Code

3220/// Accessor: Is there a Great Work slot of this type somewhere in the city?3221bool CvCityBuildings::GetNextAvailableGreatWorkSlot(BuildingClassTypes *eBuildingClass, int *iSlot) const3222{3223	if (eBuildingClass && iSlot)3224	{3225		for(int iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)3226		{3227			BuildingClassTypes eLoopBuildingClass = (BuildingClassTypes) iI;3228			BuildingTypes eBuilding = (BuildingTypes)GC.getCivilizationInfo(m_pCity->getCivilizationType())->getCivilizationBuildings(eLoopBuildingClass);3229			if(NO_BUILDING != eBuilding)3230			{3231				if (GetNumBuilding(eBuilding) > 0)3232				{3233					int iNumSlots = GC.getBuildingInfo(eBuilding)->GetGreatWorkCount();3234					for (int jJ = 0; jJ < iNumSlots; jJ++)3235					{3236						if (GetBuildingGreatWork (eLoopBuildingClass, jJ) == NO_GREAT_WORK)3237						{3238							*eBuildingClass = eLoopBuildingClass;3239							*iSlot = jJ;3240							return true;3241						}3242					}3243				}3244			}3245		}3246	}32473248	return false;3249}

Calls

Called by