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
- BuildingGreatWork::BuildingGreatWork()
- CvGlobals::GetEngineUserInterface()
ICvUserInterface1::setDirtystd::_Vector_const_iterator::_Vector_const_iteratorstd::_Vector_const_iterator::operator!=std::_Vector_iterator::operator*std::_Vector_iterator::operator++std::vector::beginstd::vector::endstd::vector::erasestd::vector::push_back
Called by
- CvCity::processBuilding(BuildingTypes, int, bool, bool, bool)
- CvCityCulture::ClearGreatWorks()
- CvGameCulture::MoveGreatWorks(PlayerTypes, int, int, int, int, int, int)
- CvGameCulture::SwapGreatWorks(PlayerTypes, int, PlayerTypes, int)
- CvPlayerCulture::DoArchaeologyChoice(ArchaeologyChoiceType)
- CvPlayerCulture::MoveWorkIntoSlot(CvGreatWorkInMyEmpire, int, BuildingTypes, int)
- CvPlayer::acquireCity(CvCity *, bool, bool, bool)
- CvUnit::createGreatWork()
- CvLuaCity::lSetBuildingGreatWork(lua_State *)