Bazaar developer reference

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

Called by