Hooks
static bool BeforeCvGameCulture_MoveGreatWorks(CvGameCulture* self, PlayerTypes ePlayer, int iCity1, int iBuildingClass1, int iWorkIndex1, int iCity2, int iBuildingClass2, int iWorkIndex2);static void AfterCvGameCulture_MoveGreatWorks(CvGameCulture* self, PlayerTypes ePlayer, int iCity1, int iBuildingClass1, int iWorkIndex1, int iCity2, int iBuildingClass2, int iWorkIndex2);static void ReplaceCvGameCulture_MoveGreatWorks(void (*original)(CvGameCulture*, PlayerTypes, int, int, int, int, int, int), CvGameCulture* self, PlayerTypes ePlayer, int iCity1, int iBuildingClass1, int iWorkIndex1, int iCity2, int iBuildingClass2, int iWorkIndex2);CivRegisterBefore<CivHooks::CvGameCulture_MoveGreatWorks>(host, &BeforeCvGameCulture_MoveGreatWorks);CivRegisterAfter<CivHooks::CvGameCulture_MoveGreatWorks>(host, &AfterCvGameCulture_MoveGreatWorks);CivRegisterReplace<CivHooks::CvGameCulture_MoveGreatWorks>(host, &ReplaceCvGameCulture_MoveGreatWorks);
Code
701void CvGameCulture::MoveGreatWorks(PlayerTypes ePlayer, int iCity1, int iBuildingClass1, int iWorkIndex1, 702 int iCity2, int iBuildingClass2, int iWorkIndex2)703{704 if(ePlayer == NO_PLAYER){705 return;706 }707708 CvPlayer& kPlayer = GET_PLAYER(ePlayer);709 if (!kPlayer.isAlive()){710 return;711 }712713 CvCity* pCity1 = kPlayer.getCity(iCity1);714 CvCity* pCity2 = kPlayer.getCity(iCity2);715 if(!pCity1 || !pCity2){716 return;717 }718719 int workType1 = pCity1->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClass1, iWorkIndex1);720 int workType2 = pCity2->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClass2, iWorkIndex2);721 pCity1->GetCityBuildings()->SetBuildingGreatWork((BuildingClassTypes)iBuildingClass1, iWorkIndex1, workType2);722 pCity2->GetCityBuildings()->SetBuildingGreatWork((BuildingClassTypes)iBuildingClass2, iWorkIndex2, workType1);723}