Bazaar developer reference

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}

Calls

Called by