Bazaar developer reference

CvCityCitizens::DoRemoveWorstCitizen(bool, SpecialistTypes, int)

Defined in
CvCityCitizens.cpp, line 1419
Class
CvCityCitizens
Hook name
CivHooks::CvCityCitizens_DoRemoveWorstCitizen

Hooks

static bool BeforeCvCityCitizens_DoRemoveWorstCitizen(CvCityCitizens* self, bool bRemoveForcedStatus, SpecialistTypes eDontChangeSpecialist, int iCurrentCityPopulation, bool& result);static void AfterCvCityCitizens_DoRemoveWorstCitizen(CvCityCitizens* self, bool bRemoveForcedStatus, SpecialistTypes eDontChangeSpecialist, int iCurrentCityPopulation, bool& result);static bool ReplaceCvCityCitizens_DoRemoveWorstCitizen(bool (*original)(CvCityCitizens*, bool, SpecialistTypes, int), CvCityCitizens* self, bool bRemoveForcedStatus, SpecialistTypes eDontChangeSpecialist, int iCurrentCityPopulation);CivRegisterBefore<CivHooks::CvCityCitizens_DoRemoveWorstCitizen>(host, &BeforeCvCityCitizens_DoRemoveWorstCitizen);CivRegisterAfter<CivHooks::CvCityCitizens_DoRemoveWorstCitizen>(host, &AfterCvCityCitizens_DoRemoveWorstCitizen);CivRegisterReplace<CivHooks::CvCityCitizens_DoRemoveWorstCitizen>(host, &ReplaceCvCityCitizens_DoRemoveWorstCitizen);

Code

1418/// Pick the worst Plot to stop working1419bool CvCityCitizens::DoRemoveWorstCitizen(bool bRemoveForcedStatus, SpecialistTypes eDontChangeSpecialist, int iCurrentCityPopulation)1420{1421	if (iCurrentCityPopulation == -1)1422	{1423#if defined(MOD_GLOBAL_CITY_AUTOMATON_WORKERS)1424		iCurrentCityPopulation = GetCity()->getPopulation(true);1425#else1426		iCurrentCityPopulation = GetCity()->getPopulation();1427#endif1428	}14291430	// Are all of our guys already not working Plots?1431#if defined(MOD_GLOBAL_CITY_AUTOMATON_WORKERS)1432	if(GetNumUnassignedCitizens() == GetCity()->getPopulation(true))1433#else1434	if(GetNumUnassignedCitizens() == GetCity()->getPopulation())1435#endif1436	{1437		return false;1438	}14391440	// Find default Specialist to pull off, if there is one1441	if(GetNumDefaultSpecialists() > 0)1442	{1443		// Do we either have unforced default specialists we can remove?1444		if(GetNumDefaultSpecialists() > GetNumForcedDefaultSpecialists())1445		{1446			ChangeNumDefaultSpecialists(-1);1447			return true;1448		}1449		if(GetNumDefaultSpecialists() > iCurrentCityPopulation)1450		{1451			ChangeNumForcedDefaultSpecialists(-1);1452			ChangeNumDefaultSpecialists(-1);1453			return true;1454		}1455	}14561457	// No Default Specialists, remove a working Pop, if there is one1458	int iWorstPlotValue = 0;1459	CvPlot* pWorstPlot = GetBestCityPlotWithValue(iWorstPlotValue, /*bBest*/ false, /*bWorked*/ true);14601461	if(pWorstPlot != NULL)1462	{1463		SetWorkingPlot(pWorstPlot, false);14641465		// If we were force-working this Plot, turn it off1466		if(bRemoveForcedStatus)1467		{1468			if(IsForcedWorkingPlot(pWorstPlot))1469			{1470				SetForcedWorkingPlot(pWorstPlot, false);1471			}1472		}14731474		return true;1475	}1476	// Have to resort to pulling away a good Specialist1477	else1478	{1479		if(DoRemoveWorstSpecialist(eDontChangeSpecialist))1480		{1481			return true;1482		}1483	}14841485	return false;1486}

Calls

Called by