Bazaar developer reference

CvCityCitizens::DoRemoveAllSpecialistsFromBuilding(BuildingTypes, bool)

Defined in
CvCityCitizens.cpp, line 2455
Class
CvCityCitizens
Hook name
CivHooks::CvCityCitizens_DoRemoveAllSpecialistsFromBuilding

Hooks

static bool BeforeCvCityCitizens_DoRemoveAllSpecialistsFromBuilding(CvCityCitizens* self, BuildingTypes eBuilding, bool bEliminatePopulation);static void AfterCvCityCitizens_DoRemoveAllSpecialistsFromBuilding(CvCityCitizens* self, BuildingTypes eBuilding, bool bEliminatePopulation);static void ReplaceCvCityCitizens_DoRemoveAllSpecialistsFromBuilding(void (*original)(CvCityCitizens*, BuildingTypes, bool), CvCityCitizens* self, BuildingTypes eBuilding, bool bEliminatePopulation);CivRegisterBefore<CivHooks::CvCityCitizens_DoRemoveAllSpecialistsFromBuilding>(host, &BeforeCvCityCitizens_DoRemoveAllSpecialistsFromBuilding);CivRegisterAfter<CivHooks::CvCityCitizens_DoRemoveAllSpecialistsFromBuilding>(host, &AfterCvCityCitizens_DoRemoveAllSpecialistsFromBuilding);CivRegisterReplace<CivHooks::CvCityCitizens_DoRemoveAllSpecialistsFromBuilding>(host, &ReplaceCvCityCitizens_DoRemoveAllSpecialistsFromBuilding);

Code

2452/// Clear EVERYONE from this Building2453/// Any one in the building will be put in the unassigned citizens list.2454/// It is up to the caller to reassign population.2455void CvCityCitizens::DoRemoveAllSpecialistsFromBuilding(BuildingTypes eBuilding, bool bEliminatePopulation)2456{2457	CvAssert(eBuilding > -1);2458	CvAssert(eBuilding < GC.getNumBuildingInfos());24592460	CvBuildingEntry* pkBuildingInfo = GC.getBuildingInfo(eBuilding);2461	if(pkBuildingInfo == NULL)2462	{2463		return;2464	}24652466	SpecialistTypes eSpecialist = (SpecialistTypes) pkBuildingInfo->GetSpecialistType();2467	int iNumSpecialists = GetNumSpecialistsInBuilding(eBuilding);24682469	m_aiNumForcedSpecialistsInBuilding[eBuilding] = 0;24702471	// Pick the worst to remove2472	for(int iAssignedLoop = 0; iAssignedLoop < iNumSpecialists; iAssignedLoop++)2473	{2474		// Decrease count for the whole city2475		m_aiSpecialistCounts[eSpecialist]--;2476		m_aiNumSpecialistsInBuilding[eBuilding]--;2477		GetCity()->processSpecialist(eSpecialist, -1);24782479		// Do we kill this population or reassign him?2480		if(bEliminatePopulation)2481		{2482			GetCity()->changePopulation(-1, /*bReassignPop*/ false);2483		}2484		else2485		{2486			ChangeNumUnassignedCitizens(1);2487		}24882489		GC.GetEngineUserInterface()->setDirty(CityInfo_DIRTY_BIT, true);2490		//GC.GetEngineUserInterface()->setDirty(InfoPane_DIRTY_BIT, true );2491		GC.GetEngineUserInterface()->setDirty(CityScreen_DIRTY_BIT, true);2492		GC.GetEngineUserInterface()->setDirty(ColoredPlots_DIRTY_BIT, true);24932494		auto_ptr<ICvCity1> pCity = GC.WrapCityPointer(GetCity());2495		GC.GetEngineUserInterface()->SetSpecificCityInfoDirty(pCity.get(), CITY_UPDATE_TYPE_SPECIALISTS);2496	}2497}

Calls

Called by