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
- CvBuildingEntry::GetGreatWorkCount() const
- CvCity::GetCityBuildings() 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)
- CvPlayerAI::getPlayer(PlayerTypes)