Bazaar developer reference

CvCity::doProduction(bool)

Defined in
CvCity.cpp, line 14879
Class
CvCity
Hook name
CivHooks::CvCity_doProduction

Hooks

static bool BeforeCvCity_doProduction(CvCity* self, bool bAllowNoProduction);static void AfterCvCity_doProduction(CvCity* self, bool bAllowNoProduction);static void ReplaceCvCity_doProduction(void (*original)(CvCity*, bool), CvCity* self, bool bAllowNoProduction);CivRegisterBefore<CivHooks::CvCity_doProduction>(host, &BeforeCvCity_doProduction);CivRegisterAfter<CivHooks::CvCity_doProduction>(host, &AfterCvCity_doProduction);CivRegisterReplace<CivHooks::CvCity_doProduction>(host, &ReplaceCvCity_doProduction);

Code

14879void CvCity::doProduction(bool bAllowNoProduction)14880{14881	VALIDATE_OBJECT14882	AI_PERF_FORMAT("City-AI-perf.csv", ("CvCity::doProduction, Turn %03d, %s, %s", GC.getGame().getElapsedGameTurns(), GetPlayer()->getCivilizationShortDescription(), getName().c_str()) );1488314884	if(!isHuman() || isProductionAutomated())14885	{14886		if(!isProduction() || isProductionProcess() || AI_isChooseProductionDirty())14887		{14888			AI_chooseProduction(false /*bInterruptWonders*/);14889		}14890	}1489114892	if(!bAllowNoProduction && !isProduction())14893	{14894		return;14895	}1489614897	if(isProduction())14898	{1489914900		if(isProductionBuilding())14901		{14902			const OrderData* pOrderNode = headOrderQueueNode();14903			int iData1 = -1;14904			if(pOrderNode != NULL)14905			{14906				iData1 = pOrderNode->iData1;14907			}1490814909			const BuildingTypes eBuilding = static_cast<BuildingTypes>(iData1);14910			CvBuildingEntry* pkBuildingInfo = GC.getBuildingInfo(eBuilding);14911			if(pkBuildingInfo)14912			{14913				if(isWorldWonderClass(pkBuildingInfo->GetBuildingClassInfo()))14914				{14915					if(m_pCityBuildings->GetBuildingProduction(eBuilding) == 0)  // otherwise we are probably already showing this14916					{14917						auto_ptr<ICvCity1> pDllCity(new CvDllCity(this));14918						DLLUI->AddDeferredWonderCommand(WONDER_CREATED, pDllCity.get(), eBuilding, 0);14919					}14920				}14921			}14922		}1492314924		changeProductionTimes100(getCurrentProductionDifferenceTimes100(false, true));1492514926#if defined(MOD_PROCESS_STOCKPILE)14927		if (!(MOD_PROCESS_STOCKPILE && isProductionProcess()))14928#endif14929		setOverflowProduction(0);14930		setFeatureProduction(0);1493114932#if defined(MOD_PROCESS_STOCKPILE)14933		if(getProduction() >= getProductionNeeded())14934#else14935		if(getProduction() >= getProductionNeeded() && !isProductionProcess())14936#endif14937		{14938#if defined(MOD_PROCESS_STOCKPILE)14939			popOrder(0, !isProductionProcess(), true);14940#else14941			popOrder(0, true, true);14942#endif14943		}14944	}14945	else14946	{14947		changeOverflowProductionTimes100(getCurrentProductionDifferenceTimes100(false, false));14948	}14949}

Calls

Called by