CvGameCulture::GetGreatWorkCurrentThemingBonus(int) const
- Defined in
- CvCultureClasses.cpp, line 444
- Class
- CvGameCulture
- Hook name
CivHooks::CvGameCulture_GetGreatWorkCurrentThemingBonus
Hooks
static bool BeforeCvGameCulture_GetGreatWorkCurrentThemingBonus(const CvGameCulture* self, int iIndex, int& result);static void AfterCvGameCulture_GetGreatWorkCurrentThemingBonus(const CvGameCulture* self, int iIndex, int& result);static int ReplaceCvGameCulture_GetGreatWorkCurrentThemingBonus(int (*original)(const CvGameCulture*, int), const CvGameCulture* self, int iIndex);CivRegisterBefore<CivHooks::CvGameCulture_GetGreatWorkCurrentThemingBonus>(host, &BeforeCvGameCulture_GetGreatWorkCurrentThemingBonus);CivRegisterAfter<CivHooks::CvGameCulture_GetGreatWorkCurrentThemingBonus>(host, &AfterCvGameCulture_GetGreatWorkCurrentThemingBonus);CivRegisterReplace<CivHooks::CvGameCulture_GetGreatWorkCurrentThemingBonus>(host, &ReplaceCvGameCulture_GetGreatWorkCurrentThemingBonus);
Code
444int CvGameCulture::GetGreatWorkCurrentThemingBonus (int iIndex) const445{446 CvAssertMsg (iIndex < GetNumGreatWorks(), "Bad Great Work index");447448 // for each player449 // for each building450 // for each slot451 // check to see if it holds this work452453 for (uint uiPlayer = 0; uiPlayer < MAX_MAJOR_CIVS; uiPlayer++)454 {455 PlayerTypes ePlayer = (PlayerTypes)uiPlayer;456457 int iCityLoop;458 CvCity* pCity = NULL;459 for (pCity = GET_PLAYER(ePlayer).firstCity(&iCityLoop); pCity != NULL; pCity = GET_PLAYER(ePlayer).nextCity(&iCityLoop))460 {461 for(int iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)462 {463 BuildingClassTypes eBuildingClass = (BuildingClassTypes)iBuildingClassLoop;464 CvCivilizationInfo& playerCivilizationInfo = GET_PLAYER(ePlayer).getCivilizationInfo();465 BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings(eBuildingClass);466 if (eBuilding != NO_BUILDING)467 {468 CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);469 if (pkBuilding)470 {471 if (pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)472 {473 int iNumSlots = pkBuilding->GetGreatWorkCount();474 for (int iI = 0; iI < iNumSlots; iI++)475 {476 int iGreatWorkIndex = pCity->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClassLoop, iI);477 if (iGreatWorkIndex == iIndex)478 {479 return pCity->GetCityCulture()->GetThemingBonus(eBuildingClass);480 }481 }482 }483 }484 }485 }486 }487 }488489 return 0;490}
Calls
- CvBuildingEntry::GetGreatWorkCount() const
- CvCity::GetCityBuildings() const
- CvCity::GetCityCulture() const
- CvCityBuildings::GetBuildingGreatWork(BuildingClassTypes, int) const
- CvCityBuildings::GetNumBuilding(BuildingTypes) const
- CvCityCulture::GetThemingBonus(BuildingClassTypes) const
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getNumBuildingClassInfos()
- CvPlayer::firstCity(int *, bool)
- CvPlayer::getCivilizationInfo() const
- CvPlayer::nextCity(int *, bool)
- CvPlayerAI::getPlayer(PlayerTypes)