Hooks
static bool BeforeCvCity_doTask(CvCity* self, TaskTypes eTask, int iData1, int iData2, bool bOption, bool bAlt, bool bShift, bool bCtrl, CityTaskResult& result);static void AfterCvCity_doTask(CvCity* self, TaskTypes eTask, int iData1, int iData2, bool bOption, bool bAlt, bool bShift, bool bCtrl, CityTaskResult& result);static CityTaskResult ReplaceCvCity_doTask(CityTaskResult (*original)(CvCity*, TaskTypes, int, int, bool, bool, bool, bool), CvCity* self, TaskTypes eTask, int iData1, int iData2, bool bOption, bool bAlt, bool bShift, bool bCtrl);CivRegisterBefore<CivHooks::CvCity_doTask>(host, &BeforeCvCity_doTask);CivRegisterAfter<CivHooks::CvCity_doTask>(host, &AfterCvCity_doTask);CivRegisterReplace<CivHooks::CvCity_doTask>(host, &ReplaceCvCity_doTask);
Code
2086CityTaskResult CvCity::doTask(TaskTypes eTask, int iData1, int iData2, bool bOption, bool bAlt, bool bShift, bool bCtrl)2087{2088 VALIDATE_OBJECT2089 CityTaskResult eResult = TASK_COMPLETED;2090 switch(eTask)2091 {2092 case TASK_RAZE:2093 GET_PLAYER(getOwner()).raze(this);2094 break;20952096 case TASK_UNRAZE:2097 GET_PLAYER(getOwner()).unraze(this);2098 break;20992100 case TASK_DISBAND:2101 GET_PLAYER(getOwner()).disband(this);2102 break;21032104 case TASK_GIFT:2105 GET_PLAYER((PlayerTypes)iData1).acquireCity(this, false, true);2106 break;21072108 case TASK_SET_AUTOMATED_CITIZENS:2109 break;21102111 case TASK_SET_AUTOMATED_PRODUCTION:2112 setProductionAutomated(bOption, bAlt && bShift && bCtrl);2113 break;21142115 case TASK_SET_EMPHASIZE:2116 m_pEmphases->SetEmphasize(((EmphasizeTypes)iData1), bOption);2117 break;21182119 case TASK_NO_AUTO_ASSIGN_SPECIALISTS:2120 GetCityCitizens()->SetNoAutoAssignSpecialists(bOption);2121 break;21222123 case TASK_ADD_SPECIALIST:2124 GetCityCitizens()->DoAddSpecialistToBuilding(/*eBuilding*/ (BuildingTypes) iData2, true);2125 break;21262127 case TASK_REMOVE_SPECIALIST:2128 GetCityCitizens()->DoRemoveSpecialistFromBuilding(/*eBuilding*/ (BuildingTypes) iData2, true);2129 GetCityCitizens()->DoAddBestCitizenFromUnassigned();2130 break;21312132 case TASK_CHANGE_WORKING_PLOT:2133 GetCityCitizens()->DoAlterWorkingPlot(/*CityPlotIndex*/ iData1);2134 break;21352136 case TASK_REMOVE_SLACKER:2137 if (GetCityCitizens()->GetNumDefaultSpecialists() > 0)2138 {2139 GetCityCitizens()->ChangeNumDefaultSpecialists(-1);2140 GetCityCitizens()->DoReallocateCitizens();2141 }2142 break;21432144 case TASK_CLEAR_WORKING_OVERRIDE:2145 clearWorkingOverride(iData1);2146 break;21472148 case TASK_HURRY:2149 hurry((HurryTypes)iData1);2150 break;21512152 case TASK_CONSCRIPT:2153 conscript();2154 break;21552156 case TASK_CLEAR_ORDERS:2157 clearOrderQueue();2158 break;21592160 case TASK_RALLY_PLOT:2161 setRallyPlot(GC.getMap().plot(iData1, iData2));2162 break;21632164 case TASK_CLEAR_RALLY_PLOT:2165 setRallyPlot(NULL);2166 break;21672168 case TASK_RANGED_ATTACK:2169 eResult = rangeStrike(iData1,iData2);2170 break;21712172 case TASK_CREATE_PUPPET:2173 DoCreatePuppet();2174 break;21752176 case TASK_ANNEX_PUPPET:2177 DoAnnex();2178 break;21792180 default:2181 CvAssertMsg(false, "eTask failed to match a valid option");2182 break;2183 }21842185 return eResult;2186}