Bazaar developer reference

CvCityCitizens::SetWorkingPlot(CvPlot *, bool, bool)

Defined in
CvCityCitizens.cpp, line 1638
Class
CvCityCitizens
Hook name
CivHooks::CvCityCitizens_SetWorkingPlot

Hooks

static bool BeforeCvCityCitizens_SetWorkingPlot(CvCityCitizens* self, CvPlot* pPlot, bool bNewValue, bool bUseUnassignedPool);static void AfterCvCityCitizens_SetWorkingPlot(CvCityCitizens* self, CvPlot* pPlot, bool bNewValue, bool bUseUnassignedPool);static void ReplaceCvCityCitizens_SetWorkingPlot(void (*original)(CvCityCitizens*, CvPlot*, bool, bool), CvCityCitizens* self, CvPlot* pPlot, bool bNewValue, bool bUseUnassignedPool);CivRegisterBefore<CivHooks::CvCityCitizens_SetWorkingPlot>(host, &BeforeCvCityCitizens_SetWorkingPlot);CivRegisterAfter<CivHooks::CvCityCitizens_SetWorkingPlot>(host, &AfterCvCityCitizens_SetWorkingPlot);CivRegisterReplace<CivHooks::CvCityCitizens_SetWorkingPlot>(host, &ReplaceCvCityCitizens_SetWorkingPlot);

Code

1637/// Tell a City to start or stop working a Plot.  Citizens will go to/from the Unassigned Pool if the 3rd argument is true1638void CvCityCitizens::SetWorkingPlot(CvPlot* pPlot, bool bNewValue, bool bUseUnassignedPool)1639{1640	int iI;16411642	int iIndex = GetCityIndexFromPlot(pPlot);16431644	CvAssertMsg(iIndex >= 0, "iIndex expected to be >= 0");1645#if defined(MOD_GLOBAL_CITY_WORKING)1646	CvAssertMsg(iIndex < GetCity()->GetNumWorkablePlots(), "iIndex expected to be < NUM_CITY_PLOTS");16471648	if(IsWorkingPlot(pPlot) != bNewValue && iIndex >= 0 && iIndex < GetCity()->GetNumWorkablePlots())1649#else1650	CvAssertMsg(iIndex < NUM_CITY_PLOTS, "iIndex expected to be < NUM_CITY_PLOTS");16511652	if(IsWorkingPlot(pPlot) != bNewValue && iIndex >= 0 && iIndex < NUM_CITY_PLOTS)1653#endif1654	{1655		m_pabWorkingPlot[iIndex] = bNewValue;16561657		// Don't look at the center Plot of a City, because we always work it for free1658		if(iIndex != CITY_HOME_PLOT)1659		{1660			// Alter the count of Plots being worked by Citizens1661			if(bNewValue)1662			{1663				ChangeNumCitizensWorkingPlots(1);16641665				if(bUseUnassignedPool)1666				{1667					ChangeNumUnassignedCitizens(-1);1668				}1669			}1670			else1671			{1672				ChangeNumCitizensWorkingPlots(-1);16731674				if(bUseUnassignedPool)1675				{1676					ChangeNumUnassignedCitizens(1);1677				}1678			}1679		}16801681		if(pPlot != NULL)1682		{1683			// investigate later1684			//CvAssertMsg(pPlot->getWorkingCity() == GetCity(), "WorkingCity is expected to be this");16851686			// Now working pPlot1687			if(IsWorkingPlot(pPlot))1688			{1689				//if (iIndex != CITY_HOME_PLOT)1690				//{1691				//	GetCity()->changeWorkingPopulation(1);1692				//}16931694				for(iI = 0; iI < NUM_YIELD_TYPES; iI++)1695				{1696					GetCity()->ChangeBaseYieldRateFromTerrain(((YieldTypes)iI), pPlot->getYield((YieldTypes)iI));1697				}1698			}1699			// No longer working pPlot1700			else1701			{1702				//if (iIndex != CITY_HOME_PLOT)1703				//{1704				//	GetCity()->changeWorkingPopulation(-1);1705				//}17061707				for(iI = 0; iI < NUM_YIELD_TYPES; iI++)1708				{1709					GetCity()->ChangeBaseYieldRateFromTerrain(((YieldTypes)iI), -pPlot->getYield((YieldTypes)iI));1710				}1711			}1712		}17131714		if(GetCity()->isCitySelected())1715		{1716			GC.GetEngineUserInterface()->setDirty(CityInfo_DIRTY_BIT, true);1717			//GC.GetEngineUserInterface()->setDirty(InfoPane_DIRTY_BIT, true );1718			GC.GetEngineUserInterface()->setDirty(CityScreen_DIRTY_BIT, true);1719			GC.GetEngineUserInterface()->setDirty(ColoredPlots_DIRTY_BIT, true);1720		}17211722		GC.GetEngineUserInterface()->setDirty(CityInfo_DIRTY_BIT, true);1723	}1724}

Calls

Called by