Bazaar developer reference

CvCityBuildings::SetBuildingGreatWork(BuildingClassTypes, int, int)

Defined in
CvBuildingClasses.cpp, line 3068
Class
CvCityBuildings
Hook name
CivHooks::CvCityBuildings_SetBuildingGreatWork

Hooks

static bool BeforeCvCityBuildings_SetBuildingGreatWork(CvCityBuildings* self, BuildingClassTypes eBuildingClass, int iSlot, int iGreatWorkIndex);static void AfterCvCityBuildings_SetBuildingGreatWork(CvCityBuildings* self, BuildingClassTypes eBuildingClass, int iSlot, int iGreatWorkIndex);static void ReplaceCvCityBuildings_SetBuildingGreatWork(void (*original)(CvCityBuildings*, BuildingClassTypes, int, int), CvCityBuildings* self, BuildingClassTypes eBuildingClass, int iSlot, int iGreatWorkIndex);CivRegisterBefore<CivHooks::CvCityBuildings_SetBuildingGreatWork>(host, &BeforeCvCityBuildings_SetBuildingGreatWork);CivRegisterAfter<CivHooks::CvCityBuildings_SetBuildingGreatWork>(host, &AfterCvCityBuildings_SetBuildingGreatWork);CivRegisterReplace<CivHooks::CvCityBuildings_SetBuildingGreatWork>(host, &ReplaceCvCityBuildings_SetBuildingGreatWork);

Code

3067/// Accessor: Set yield boost for a specific building by yield type3068void CvCityBuildings::SetBuildingGreatWork(BuildingClassTypes eBuildingClass, int iSlot, int iGreatWorkIndex)3069{3070	for(std::vector<BuildingGreatWork>::iterator it = m_aBuildingGreatWork.begin(); it != m_aBuildingGreatWork.end(); ++it)3071	{3072		if((*it).eBuildingClass == eBuildingClass && (*it).iSlot == iSlot)3073		{3074			int iOldGreatWorkIndex = (*it).iGreatWorkIndex;3075			if (iOldGreatWorkIndex != iGreatWorkIndex)3076			{3077				if (iGreatWorkIndex == -1)3078				{3079					m_aBuildingGreatWork.erase(it);3080				}3081				else3082				{3083					(*it).iGreatWorkIndex = iGreatWorkIndex;3084				}3085			}30863087			GC.GetEngineUserInterface()->setDirty(CityInfo_DIRTY_BIT, true);3088			return;3089		}3090	}30913092	if (iGreatWorkIndex != -1)3093	{3094		BuildingGreatWork kWork;3095		kWork.eBuildingClass = eBuildingClass;3096		kWork.iSlot = iSlot;3097		kWork.iGreatWorkIndex = iGreatWorkIndex;3098		m_aBuildingGreatWork.push_back(kWork);3099	}31003101	GC.GetEngineUserInterface()->setDirty(CityInfo_DIRTY_BIT, true);3102}

Calls

Called by