Hooks
static bool BeforeCvPlayerCulture_MoveSingleWorks(CvPlayerCulture* self, vector<CvGreatWorkBuildingInMyEmpire> & buildings, vector<CvGreatWorkInMyEmpire> & works1, vector<CvGreatWorkInMyEmpire> & works2, YieldTypes eFocusYield);static void AfterCvPlayerCulture_MoveSingleWorks(CvPlayerCulture* self, vector<CvGreatWorkBuildingInMyEmpire> & buildings, vector<CvGreatWorkInMyEmpire> & works1, vector<CvGreatWorkInMyEmpire> & works2, YieldTypes eFocusYield);static void ReplaceCvPlayerCulture_MoveSingleWorks(void (*original)(CvPlayerCulture*, vector<CvGreatWorkBuildingInMyEmpire> &, vector<CvGreatWorkInMyEmpire> &, vector<CvGreatWorkInMyEmpire> &, YieldTypes), CvPlayerCulture* self, vector<CvGreatWorkBuildingInMyEmpire> & buildings, vector<CvGreatWorkInMyEmpire> & works1, vector<CvGreatWorkInMyEmpire> & works2, YieldTypes eFocusYield);CivRegisterBefore<CivHooks::CvPlayerCulture_MoveSingleWorks>(host, &BeforeCvPlayerCulture_MoveSingleWorks);CivRegisterAfter<CivHooks::CvPlayerCulture_MoveSingleWorks>(host, &AfterCvPlayerCulture_MoveSingleWorks);CivRegisterReplace<CivHooks::CvPlayerCulture_MoveSingleWorks>(host, &ReplaceCvPlayerCulture_MoveSingleWorks);
Code
1803#if defined(MOD_GLOBAL_GREATWORK_YIELDTYPES)1804void CvPlayerCulture::MoveSingleWorks(vector<CvGreatWorkBuildingInMyEmpire> &buildings, vector<CvGreatWorkInMyEmpire> &works1, vector<CvGreatWorkInMyEmpire> &works2, YieldTypes eFocusYield)1805{1806 // CUSTOMLOG("Move Single Works");1807 vector<CvGreatWorkBuildingInMyEmpire>::iterator itBuilding;18081809 /*1810 * The order is1811 * - fill single homeland buildings with a focused yield1812 * - fill single puppet buildings with a focused yield1813 * - fill single homeland buildings with any yield1814 * - fill single puppet buildings with any yield1815 * - fill single homeland buildings with no yield1816 * - fill single puppet buildings with no yield1817 * - fill single endangered buildings with a focused yield1818 * - fill single endangered buildings with any yield1819 * - fill single endangered buildings with no yield1820 */18211822 vector<CvGreatWorkBuildingInMyEmpire> homelandBuildingsFocus;1823 vector<CvGreatWorkBuildingInMyEmpire> homelandBuildingsAny;1824 vector<CvGreatWorkBuildingInMyEmpire> homelandBuildingsNone;1825 vector<CvGreatWorkBuildingInMyEmpire> puppetBuildingsFocus;1826 vector<CvGreatWorkBuildingInMyEmpire> puppetBuildingsAny;1827 vector<CvGreatWorkBuildingInMyEmpire> puppetBuildingsNone;1828 vector<CvGreatWorkBuildingInMyEmpire> endangeredBuildingsFocus;1829 vector<CvGreatWorkBuildingInMyEmpire> endangeredBuildingsAny;1830 vector<CvGreatWorkBuildingInMyEmpire> endangeredBuildingsNone;18311832 for (itBuilding = buildings.begin(); itBuilding != buildings.end(); itBuilding++)1833 {1834 if (!itBuilding->m_bThemed) {1835 if (!itBuilding->m_bEndangered) {1836 if (!itBuilding->m_bPuppet) {1837 if (itBuilding->m_eYieldType == eFocusYield) {1838 homelandBuildingsFocus.push_back(*itBuilding);1839 } else if (itBuilding->m_eYieldType != NO_YIELD) {1840 homelandBuildingsAny.push_back(*itBuilding);1841 } else {1842 homelandBuildingsNone.push_back(*itBuilding);1843 }1844 } else {1845 if (itBuilding->m_eYieldType == eFocusYield) {1846 puppetBuildingsFocus.push_back(*itBuilding);1847 } else if (itBuilding->m_eYieldType != NO_YIELD) {1848 puppetBuildingsAny.push_back(*itBuilding);1849 } else {1850 puppetBuildingsNone.push_back(*itBuilding);1851 }1852 }1853 } else {1854 if (itBuilding->m_eYieldType == eFocusYield) {1855 endangeredBuildingsFocus.push_back(*itBuilding);1856 } else if (itBuilding->m_eYieldType != NO_YIELD) {1857 endangeredBuildingsAny.push_back(*itBuilding);1858 } else {1859 endangeredBuildingsNone.push_back(*itBuilding);1860 }1861 }1862 }1863 }18641865 for (itBuilding = homelandBuildingsFocus.begin(); itBuilding != homelandBuildingsFocus.end(); itBuilding++) {1866 FillBuilding(itBuilding, works1, works2);1867 }1868 for (itBuilding = puppetBuildingsFocus.begin(); itBuilding != puppetBuildingsFocus.end(); itBuilding++) {1869 FillBuilding(itBuilding, works1, works2);1870 }1871 for (itBuilding = homelandBuildingsAny.begin(); itBuilding != homelandBuildingsAny.end(); itBuilding++) {1872 FillBuilding(itBuilding, works1, works2);1873 }1874 for (itBuilding = puppetBuildingsAny.begin(); itBuilding != puppetBuildingsAny.end(); itBuilding++) {1875 FillBuilding(itBuilding, works1, works2);1876 }1877 for (itBuilding = homelandBuildingsNone.begin(); itBuilding != homelandBuildingsNone.end(); itBuilding++) {1878 FillBuilding(itBuilding, works1, works2);1879 }1880 for (itBuilding = puppetBuildingsNone.begin(); itBuilding != puppetBuildingsNone.end(); itBuilding++) {1881 FillBuilding(itBuilding, works1, works2);1882 }1883 for (itBuilding = endangeredBuildingsFocus.begin(); itBuilding != endangeredBuildingsFocus.end(); itBuilding++) {1884 FillBuilding(itBuilding, works1, works2);1885 }1886 for (itBuilding = endangeredBuildingsAny.begin(); itBuilding != endangeredBuildingsAny.end(); itBuilding++) {1887 FillBuilding(itBuilding, works1, works2);1888 }1889 for (itBuilding = endangeredBuildingsNone.begin(); itBuilding != endangeredBuildingsNone.end(); itBuilding++) {1890 FillBuilding(itBuilding, works1, works2);1891 }1892}