Bazaar developer reference

CvPlayerCulture::GetGreatWorkLocation(int, int &, BuildingTypes &, int &)

Defined in
CvCultureClasses.cpp, line 1028
Class
CvPlayerCulture
Hook name
CivHooks::CvPlayerCulture_GetGreatWorkLocation

Hooks

static bool BeforeCvPlayerCulture_GetGreatWorkLocation(CvPlayerCulture* self, int iSearchIndex, int & iReturnCityID, BuildingTypes & eReturnBuilding, int & iReturnSlot, bool& result);static void AfterCvPlayerCulture_GetGreatWorkLocation(CvPlayerCulture* self, int iSearchIndex, int & iReturnCityID, BuildingTypes & eReturnBuilding, int & iReturnSlot, bool& result);static bool ReplaceCvPlayerCulture_GetGreatWorkLocation(bool (*original)(CvPlayerCulture*, int, int &, BuildingTypes &, int &), CvPlayerCulture* self, int iSearchIndex, int & iReturnCityID, BuildingTypes & eReturnBuilding, int & iReturnSlot);CivRegisterBefore<CivHooks::CvPlayerCulture_GetGreatWorkLocation>(host, &BeforeCvPlayerCulture_GetGreatWorkLocation);CivRegisterAfter<CivHooks::CvPlayerCulture_GetGreatWorkLocation>(host, &AfterCvPlayerCulture_GetGreatWorkLocation);CivRegisterReplace<CivHooks::CvPlayerCulture_GetGreatWorkLocation>(host, &ReplaceCvPlayerCulture_GetGreatWorkLocation);

Code

1028bool CvPlayerCulture::GetGreatWorkLocation(int iSearchIndex, int &iReturnCityID, BuildingTypes &eReturnBuilding, int &iReturnSlot)1029{1030	CvCity* pLoopCity = NULL;1031	int iLoop = 0;10321033	for(pLoopCity = m_pPlayer->firstCity(&iLoop); pLoopCity != NULL; pLoopCity = m_pPlayer->nextCity(&iLoop))1034	{1035		for(int iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)1036		{1037			CvCivilizationInfo& playerCivilizationInfo = m_pPlayer->getCivilizationInfo();1038			BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings((BuildingClassTypes)iBuildingClassLoop);1039			if (eBuilding != NO_BUILDING)1040			{1041				CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);1042				if (pkBuilding)1043				{1044					if (pLoopCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)1045					{1046						int iNumSlots = pkBuilding->GetGreatWorkCount();1047						for (int iI = 0; iI < iNumSlots; iI++)1048						{1049							int iGreatWorkIndex = pLoopCity->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClassLoop, iI);1050							if (iGreatWorkIndex == iSearchIndex)1051							{1052								iReturnCityID = pLoopCity->GetID();1053								eReturnBuilding = eBuilding;1054								iReturnSlot = iI;1055								return true;1056							}1057						}1058					}1059				}1060			}1061		}1062	}10631064	return false;	1065}

Calls

Called by