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
- CvBuildingEntry::GetGreatWorkCount() const
- CvBuildingEntry::GetGreatWorkSlotType() const
- CvBuildingEntry::GetProductionCost() const
- CvCity::canConstruct(BuildingTypes, bool, bool, bool, bool, CvString *) const
- CvCity::GetCityBuildings() const
- CvCity::getOwner() const
- CvCityBuildings::GetNumBuilding(BuildingTypes) const
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGlobals::getBuildingClassInfo(BuildingClassTypes)
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getNumBuildingClassInfos()
- CvPlayer::getCivilizationInfo() const
- CvPlayerAI::getPlayer(PlayerTypes)
- isWorldWonderClass(const CvBuildingClassInfo &)