Hooks
static bool BeforeCvPlayerCulture_MoveWorkIntoSlot(CvPlayerCulture* self, CvGreatWorkInMyEmpire kWork, int iCityID, BuildingTypes eBuilding, int iSlot);static void AfterCvPlayerCulture_MoveWorkIntoSlot(CvPlayerCulture* self, CvGreatWorkInMyEmpire kWork, int iCityID, BuildingTypes eBuilding, int iSlot);static void ReplaceCvPlayerCulture_MoveWorkIntoSlot(void (*original)(CvPlayerCulture*, CvGreatWorkInMyEmpire, int, BuildingTypes, int), CvPlayerCulture* self, CvGreatWorkInMyEmpire kWork, int iCityID, BuildingTypes eBuilding, int iSlot);CivRegisterBefore<CivHooks::CvPlayerCulture_MoveWorkIntoSlot>(host, &BeforeCvPlayerCulture_MoveWorkIntoSlot);CivRegisterAfter<CivHooks::CvPlayerCulture_MoveWorkIntoSlot>(host, &AfterCvPlayerCulture_MoveWorkIntoSlot);CivRegisterReplace<CivHooks::CvPlayerCulture_MoveWorkIntoSlot>(host, &ReplaceCvPlayerCulture_MoveWorkIntoSlot);
Code
1963/// Lower-level routine to perform the swap between two Great Works within your own empire1964void CvPlayerCulture::MoveWorkIntoSlot (CvGreatWorkInMyEmpire kWork, int iCityID, BuildingTypes eBuilding, int iSlot)1965{1966 CvBuildingEntry *pkToEntry = GC.getBuildingInfo(eBuilding);19671968 int iFromCityID;1969 BuildingTypes eFromBuildingType;1970 int iFromSlot;1971 GetGreatWorkLocation(kWork.m_iGreatWorkIndex, iFromCityID, eFromBuildingType, iFromSlot);19721973 CvBuildingEntry *pkFromEntry = GC.getBuildingInfo(eFromBuildingType);1974 if (pkToEntry && pkFromEntry)1975 {1976 CvCity *pToCity = m_pPlayer->getCity(iCityID);1977 BuildingClassTypes eToBuildingClass = (BuildingClassTypes)pkToEntry->GetBuildingClassType();19781979 int iFromWork = pToCity->GetCityBuildings()->GetBuildingGreatWork(eToBuildingClass, iSlot);1980 CvCity *pFromCity = m_pPlayer->getCity(iFromCityID);1981 BuildingClassTypes eFromBuildingClass = (BuildingClassTypes)pkFromEntry->GetBuildingClassType();19821983 pToCity->GetCityBuildings()->SetBuildingGreatWork(eToBuildingClass, iSlot, kWork.m_iGreatWorkIndex);1984 pFromCity->GetCityBuildings()->SetBuildingGreatWork(eFromBuildingClass, iFromSlot, iFromWork);1985 }1986}