Bazaar developer reference

CvGameCulture::GetGreatWorkCity(int) const

Defined in
CvCultureClasses.cpp, line 396
Class
CvGameCulture
Hook name
CivHooks::CvGameCulture_GetGreatWorkCity

Hooks

static bool BeforeCvGameCulture_GetGreatWorkCity(const CvGameCulture* self, int iIndex, CvCity*& result);static void AfterCvGameCulture_GetGreatWorkCity(const CvGameCulture* self, int iIndex, CvCity*& result);static CvCity* ReplaceCvGameCulture_GetGreatWorkCity(CvCity* (*original)(const CvGameCulture*, int), const CvGameCulture* self, int iIndex);CivRegisterBefore<CivHooks::CvGameCulture_GetGreatWorkCity>(host, &BeforeCvGameCulture_GetGreatWorkCity);CivRegisterAfter<CivHooks::CvGameCulture_GetGreatWorkCity>(host, &AfterCvGameCulture_GetGreatWorkCity);CivRegisterReplace<CivHooks::CvGameCulture_GetGreatWorkCity>(host, &ReplaceCvGameCulture_GetGreatWorkCity);

Code

396CvCity* CvGameCulture::GetGreatWorkCity(int iIndex) const397{398	CvAssertMsg (iIndex < GetNumGreatWorks(), "Bad Great Work index");399	400	// for each player401	//   for each building402	//     for each slot403	//       check to see if it holds this work404405	for (uint uiPlayer = 0; uiPlayer < MAX_MAJOR_CIVS; uiPlayer++)406	{407		PlayerTypes ePlayer = (PlayerTypes)uiPlayer;408409		int iCityLoop;410		CvCity* pCity = NULL;411		for (pCity = GET_PLAYER(ePlayer).firstCity(&iCityLoop); pCity != NULL; pCity = GET_PLAYER(ePlayer).nextCity(&iCityLoop))412		{413			for(int iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)414			{415				CvCivilizationInfo& playerCivilizationInfo = GET_PLAYER(ePlayer).getCivilizationInfo();416				BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings((BuildingClassTypes)iBuildingClassLoop);417				if (eBuilding != NO_BUILDING)418				{419					CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);420					if (pkBuilding)421					{422						if (pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)423						{424							int iNumSlots = pkBuilding->GetGreatWorkCount();425							for (int iI = 0; iI < iNumSlots; iI++)426							{427								int iGreatWorkIndex = pCity->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClassLoop, iI);428								if (iGreatWorkIndex == iIndex)429								{430									return pCity;431								}432							}433						}434					}435				}436			}437		}438	}439	440	return NULL;441}

Calls

Called by