CvGameCulture::GetGreatWorkController(int) const
- Defined in
- CvCultureClasses.cpp, line 334
- Class
- CvGameCulture
- Hook name
CivHooks::CvGameCulture_GetGreatWorkController
Hooks
static bool BeforeCvGameCulture_GetGreatWorkController(const CvGameCulture* self, int iIndex, PlayerTypes& result);static void AfterCvGameCulture_GetGreatWorkController(const CvGameCulture* self, int iIndex, PlayerTypes& result);static PlayerTypes ReplaceCvGameCulture_GetGreatWorkController(PlayerTypes (*original)(const CvGameCulture*, int), const CvGameCulture* self, int iIndex);CivRegisterBefore<CivHooks::CvGameCulture_GetGreatWorkController>(host, &BeforeCvGameCulture_GetGreatWorkController);CivRegisterAfter<CivHooks::CvGameCulture_GetGreatWorkController>(host, &AfterCvGameCulture_GetGreatWorkController);CivRegisterReplace<CivHooks::CvGameCulture_GetGreatWorkController>(host, &ReplaceCvGameCulture_GetGreatWorkController);
Code
334PlayerTypes CvGameCulture::GetGreatWorkController(int iIndex) const335{336 CvAssertMsg (iIndex < GetNumGreatWorks(), "Bad Great Work index");337 338 // for each player339 // for each building340 // for each slot341 // check to see if it holds this work342343 for (uint uiPlayer = 0; uiPlayer < MAX_MAJOR_CIVS; uiPlayer++)344 {345 PlayerTypes ePlayer = (PlayerTypes)uiPlayer;346347 int iCityLoop;348 CvCity* pCity = NULL;349 for (pCity = GET_PLAYER(ePlayer).firstCity(&iCityLoop); pCity != NULL; pCity = GET_PLAYER(ePlayer).nextCity(&iCityLoop))350 {351 for(int iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)352 {353 CvCivilizationInfo& playerCivilizationInfo = GET_PLAYER(ePlayer).getCivilizationInfo();354 BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings((BuildingClassTypes)iBuildingClassLoop);355 if (eBuilding != NO_BUILDING)356 {357 CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);358 if (pkBuilding)359 {360 if (pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)361 {362 int iNumSlots = pkBuilding->GetGreatWorkCount();363 for (int iI = 0; iI < iNumSlots; iI++)364 {365 int iGreatWorkIndex = pCity->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClassLoop, iI);366 if (iGreatWorkIndex == iIndex)367 {368 return ePlayer;369 }370 }371 }372 }373 }374 }375 }376 }377378 return NO_PLAYER;379}
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)