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
- CvBuildingEntry::GetSpecialistType() const
- CvCity::changePopulation(int, bool)
- CvCity::processSpecialist(SpecialistTypes, int)
- CvCityCitizens::ChangeNumUnassignedCitizens(int)
- CvCityCitizens::GetCity()
- CvCityCitizens::GetNumSpecialistsInBuilding(BuildingTypes) const
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::GetEngineUserInterface()
- CvGlobals::WrapCityPointer(CvCity *)
ICvUserInterface1::setDirtyICvUserInterface1::SetSpecificCityInfoDirtystd::auto_ptr::auto_ptrstd::auto_ptr::getstd::auto_ptr::operator auto_ptr_ref