CvCityCitizens::DoRemoveWorstSpecialist(SpecialistTypes, const BuildingTypes)
- Defined in
- CvCityCitizens.cpp, line 2501
- Class
- CvCityCitizens
- Hook name
CivHooks::CvCityCitizens_DoRemoveWorstSpecialist
Hooks
static bool BeforeCvCityCitizens_DoRemoveWorstSpecialist(CvCityCitizens* self, SpecialistTypes eDontChangeSpecialist, const BuildingTypes eDontRemoveFromBuilding, bool& result);static void AfterCvCityCitizens_DoRemoveWorstSpecialist(CvCityCitizens* self, SpecialistTypes eDontChangeSpecialist, const BuildingTypes eDontRemoveFromBuilding, bool& result);static bool ReplaceCvCityCitizens_DoRemoveWorstSpecialist(bool (*original)(CvCityCitizens*, SpecialistTypes, const BuildingTypes), CvCityCitizens* self, SpecialistTypes eDontChangeSpecialist, const BuildingTypes eDontRemoveFromBuilding);CivRegisterBefore<CivHooks::CvCityCitizens_DoRemoveWorstSpecialist>(host, &BeforeCvCityCitizens_DoRemoveWorstSpecialist);CivRegisterAfter<CivHooks::CvCityCitizens_DoRemoveWorstSpecialist>(host, &AfterCvCityCitizens_DoRemoveWorstSpecialist);CivRegisterReplace<CivHooks::CvCityCitizens_DoRemoveWorstSpecialist>(host, &ReplaceCvCityCitizens_DoRemoveWorstSpecialist);
Code
2500/// Find the worst Specialist and remove him from duty2501bool CvCityCitizens::DoRemoveWorstSpecialist(SpecialistTypes eDontChangeSpecialist, const BuildingTypes eDontRemoveFromBuilding /* = NO_BUILDING */)2502{2503 for(int iBuildingLoop = 0; iBuildingLoop < GC.getNumBuildingInfos(); iBuildingLoop++)2504 {2505 const BuildingTypes eBuilding = static_cast<BuildingTypes>(iBuildingLoop);25062507 if(eBuilding == eDontRemoveFromBuilding)2508 {2509 continue;2510 }25112512 CvBuildingEntry* pkBuildingInfo = GC.getBuildingInfo(eBuilding);2513 if(pkBuildingInfo == NULL)2514 {2515 continue;2516 }25172518 // We might not be allowed to change this Building's Specialists2519 if(eDontChangeSpecialist == pkBuildingInfo->GetSpecialistType())2520 {2521 continue;2522 }25232524 if(GetNumSpecialistsInBuilding(eBuilding) > 0)2525 {2526 DoRemoveSpecialistFromBuilding(eBuilding, true);25272528 return true;2529 }2530 }25312532 return false;2533}