Bazaar developer reference

CvCityCulture::GetSlotTypeFirstAvailableCultureBuilding() const

Defined in
CvCultureClasses.cpp, line 4400
Class
CvCityCulture
Hook name
CivHooks::CvCityCulture_GetSlotTypeFirstAvailableCultureBuilding

Hooks

static bool BeforeCvCityCulture_GetSlotTypeFirstAvailableCultureBuilding(const CvCityCulture* self, GreatWorkSlotType& result);static void AfterCvCityCulture_GetSlotTypeFirstAvailableCultureBuilding(const CvCityCulture* self, GreatWorkSlotType& result);static GreatWorkSlotType ReplaceCvCityCulture_GetSlotTypeFirstAvailableCultureBuilding(GreatWorkSlotType (*original)(const CvCityCulture*), const CvCityCulture* self);CivRegisterBefore<CivHooks::CvCityCulture_GetSlotTypeFirstAvailableCultureBuilding>(host, &BeforeCvCityCulture_GetSlotTypeFirstAvailableCultureBuilding);CivRegisterAfter<CivHooks::CvCityCulture_GetSlotTypeFirstAvailableCultureBuilding>(host, &AfterCvCityCulture_GetSlotTypeFirstAvailableCultureBuilding);CivRegisterReplace<CivHooks::CvCityCulture_GetSlotTypeFirstAvailableCultureBuilding>(host, &ReplaceCvCityCulture_GetSlotTypeFirstAvailableCultureBuilding);

Code

4399/// Which type of Great Work slot can we add with the cheapest available culture building?4400GreatWorkSlotType CvCityCulture::GetSlotTypeFirstAvailableCultureBuilding() const4401{4402	int iCheapest = MAX_INT;4403	GreatWorkSlotType eRtnValue = NO_GREAT_WORK_SLOT;4404	CvPlayer &kCityPlayer = GET_PLAYER(m_pCity->getOwner());44054406	for(int iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)4407	{4408		CvCivilizationInfo& playerCivilizationInfo = kCityPlayer.getCivilizationInfo();4409		BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings((BuildingClassTypes)iBuildingClassLoop);4410		if (eBuilding != NO_BUILDING)4411		{4412			CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);4413			CvBuildingClassInfo *pkBuildingClass = GC.getBuildingClassInfo((BuildingClassTypes)iBuildingClassLoop);4414			if (pkBuilding && pkBuildingClass && !isWorldWonderClass(*pkBuildingClass))4415			{4416				int iNumSlots = pkBuilding->GetGreatWorkCount();4417				if (iNumSlots > 0 && m_pCity->GetCityBuildings()->GetNumBuilding(eBuilding) == 0)4418				{4419					if (m_pCity->canConstruct(eBuilding))4420					{4421						int iCost = pkBuilding->GetProductionCost();4422						if (iCost < iCheapest)4423						{4424							iCheapest = iCost;4425							eRtnValue = pkBuilding->GetGreatWorkSlotType();4426						}4427					}4428				}4429			}4430		}4431	}4432	return eRtnValue;4433}

Calls

Called by