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
- CvBuildingEntry::GetGreatWorkCount() const
- CvCity::GetCityBuildings() const
- CvCity::GetID() const
- CvCityBuildings::GetBuildingGreatWork(BuildingClassTypes, int) const
- CvCityBuildings::GetNumBuilding(BuildingTypes) const
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getNumBuildingClassInfos()
- CvPlayer::firstCity(int *, bool)
- CvPlayer::getCivilizationInfo() const
- CvPlayer::nextCity(int *, bool)
Called by
- CvPlayerCulture::FillBuilding(vector<CvGreatWorkBuildingInMyEmpire>::const_iterator, vector<CvGreatWorkInMyEmpire> &, vector<CvGreatWorkInMyEmpire> &)
- CvPlayerCulture::MoveWorkIntoSlot(CvGreatWorkInMyEmpire, int, BuildingTypes, int)
- CvPlayerCulture::ThemeBuilding(vector<CvGreatWorkBuildingInMyEmpire>::const_iterator, vector<CvGreatWorkInMyEmpire> &, vector<CvGreatWorkInMyEmpire> &, bool)
- CvPlayerCulture::ThemeEqualArtArtifact(CvGreatWorkBuildingInMyEmpire, int, int, vector<CvGreatWorkInMyEmpire> &, vector<CvGreatWorkInMyEmpire> &, bool)