Bazaar developer reference

CvCityCitizens::DoRemoveSpecialistFromBuilding(BuildingTypes, bool, bool)

Defined in
CvCityCitizens.cpp, line 2399
Class
CvCityCitizens
Hook name
CivHooks::CvCityCitizens_DoRemoveSpecialistFromBuilding

Hooks

static bool BeforeCvCityCitizens_DoRemoveSpecialistFromBuilding(CvCityCitizens* self, BuildingTypes eBuilding, bool bForced, bool bEliminatePopulation);static void AfterCvCityCitizens_DoRemoveSpecialistFromBuilding(CvCityCitizens* self, BuildingTypes eBuilding, bool bForced, bool bEliminatePopulation);static void ReplaceCvCityCitizens_DoRemoveSpecialistFromBuilding(void (*original)(CvCityCitizens*, BuildingTypes, bool, bool), CvCityCitizens* self, BuildingTypes eBuilding, bool bForced, bool bEliminatePopulation);CivRegisterBefore<CivHooks::CvCityCitizens_DoRemoveSpecialistFromBuilding>(host, &BeforeCvCityCitizens_DoRemoveSpecialistFromBuilding);CivRegisterAfter<CivHooks::CvCityCitizens_DoRemoveSpecialistFromBuilding>(host, &AfterCvCityCitizens_DoRemoveSpecialistFromBuilding);CivRegisterReplace<CivHooks::CvCityCitizens_DoRemoveSpecialistFromBuilding>(host, &ReplaceCvCityCitizens_DoRemoveSpecialistFromBuilding);

Code

2398/// Removes and uninitializes a Specialist for this building2399void CvCityCitizens::DoRemoveSpecialistFromBuilding(BuildingTypes eBuilding, bool bForced, bool bEliminatePopulation)2400{2401	CvAssert(eBuilding > -1);2402	CvAssert(eBuilding < GC.getNumBuildingInfos());24032404	CvBuildingEntry* pkBuildingInfo = GC.getBuildingInfo(eBuilding);2405	if(pkBuildingInfo == NULL)2406	{2407		return;2408	}24092410	SpecialistTypes eSpecialist = (SpecialistTypes) pkBuildingInfo->GetSpecialistType();24112412	int iNumSpecialistsAssigned = GetNumSpecialistsInBuilding(eBuilding);24132414	// Need at least 1 assigned to remove2415	if(iNumSpecialistsAssigned > 0)2416	{2417		// Decrease count for the whole city2418		m_aiSpecialistCounts[eSpecialist]--;2419		m_aiNumSpecialistsInBuilding[eBuilding]--;24202421		if(bForced)2422		{2423			m_aiNumForcedSpecialistsInBuilding[eBuilding]--;2424		}24252426		GetCity()->processSpecialist(eSpecialist, -1);2427		GetCity()->UpdateReligion(GetCity()->GetCityReligions()->GetReligiousMajority());24282429		// Do we kill this population or reassign him?2430		if(bEliminatePopulation)2431		{2432			GetCity()->changePopulation(-1, /*bReassignPop*/ false);2433		}2434		else2435		{2436			ChangeNumUnassignedCitizens(1);2437		}24382439		GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);2440		GC.GetEngineUserInterface()->setDirty(CityInfo_DIRTY_BIT, true);2441		//GC.GetEngineUserInterface()->setDirty(InfoPane_DIRTY_BIT, true );2442		GC.GetEngineUserInterface()->setDirty(CityScreen_DIRTY_BIT, true);2443		GC.GetEngineUserInterface()->setDirty(ColoredPlots_DIRTY_BIT, true);24442445		auto_ptr<ICvCity1> pCity = GC.WrapCityPointer(GetCity());24462447		GC.GetEngineUserInterface()->SetSpecificCityInfoDirty(pCity.get(), CITY_UPDATE_TYPE_SPECIALISTS);2448	}2449}

Calls

Called by