Bazaar developer reference

CvCity::pushOrder(OrderTypes, int, int, bool, bool, bool, bool)

Defined in
CvCity.cpp, line 12831
Class
CvCity
Hook name
CivHooks::CvCity_pushOrder

Hooks

static bool BeforeCvCity_pushOrder(CvCity* self, OrderTypes eOrder, int iData1, int iData2, bool bSave, bool bPop, bool bAppend, bool bRush);static void AfterCvCity_pushOrder(CvCity* self, OrderTypes eOrder, int iData1, int iData2, bool bSave, bool bPop, bool bAppend, bool bRush);static void ReplaceCvCity_pushOrder(void (*original)(CvCity*, OrderTypes, int, int, bool, bool, bool, bool), CvCity* self, OrderTypes eOrder, int iData1, int iData2, bool bSave, bool bPop, bool bAppend, bool bRush);CivRegisterBefore<CivHooks::CvCity_pushOrder>(host, &BeforeCvCity_pushOrder);CivRegisterAfter<CivHooks::CvCity_pushOrder>(host, &AfterCvCity_pushOrder);CivRegisterReplace<CivHooks::CvCity_pushOrder>(host, &ReplaceCvCity_pushOrder);

Code

12831void CvCity::pushOrder(OrderTypes eOrder, int iData1, int iData2, bool bSave, bool bPop, bool bAppend, bool bRush)12832{12833	VALIDATE_OBJECT12834	OrderData order;12835	bool bValid;1283612837	if(bPop)12838	{12839		clearOrderQueue();12840	}1284112842	bValid = false;1284312844	switch(eOrder)12845	{12846	case ORDER_TRAIN:12847		if(canTrain((UnitTypes)iData1))12848		{12849			CvUnitEntry* pkUnitInfo = GC.getUnitInfo((UnitTypes)iData1);12850			if(pkUnitInfo)12851			{12852				if(iData2 == -1)12853				{12854					iData2 = pkUnitInfo->GetDefaultUnitAIType();12855				}1285612857				GET_PLAYER(getOwner()).changeUnitClassMaking(((UnitClassTypes)(pkUnitInfo->GetUnitClassType())), 1);1285812859				bValid = true;12860			}12861		}12862		break;1286312864	case ORDER_CONSTRUCT:12865		if(canConstruct((BuildingTypes)iData1))12866		{12867			CvBuildingEntry* pkBuildingInfo = GC.getBuildingInfo((BuildingTypes)iData1);12868			if(pkBuildingInfo)12869			{12870				GET_PLAYER(getOwner()).changeBuildingClassMaking(((BuildingClassTypes)(pkBuildingInfo->GetBuildingClassType())), 1);1287112872				bValid = true;12873			}12874		}12875		break;1287612877	case ORDER_CREATE:12878		if(canCreate((ProjectTypes)iData1))12879		{12880			GET_TEAM(getTeam()).changeProjectMaking(((ProjectTypes)iData1), 1);12881			GET_PLAYER(getOwner()).changeProjectMaking(((ProjectTypes)iData1), 1);1288212883			bValid = true;12884		}12885		break;1288612887	case ORDER_PREPARE:12888		if(canPrepare((SpecialistTypes)iData1))12889		{12890			bValid = true;12891		}12892		break;1289312894	case ORDER_MAINTAIN:12895		if(canMaintain((ProcessTypes)iData1))12896		{12897			bValid = true;12898		}12899		break;1290012901	default:12902		CvAssertMsg(false, "iOrder did not match a valid option");12903		break;12904	}1290512906	if(!bValid)12907	{12908		return;12909	}1291012911	order.eOrderType = eOrder;12912	order.iData1 = iData1;12913	order.iData2 = iData2;12914	order.bSave = bSave;12915	order.bRush = bRush;1291612917	if(bAppend)12918	{12919		m_orderQueue.insertAtEnd(&order);12920	}12921	else12922	{12923		stopHeadOrder();12924		m_orderQueue.insertAtBeginning(&order);12925	}1292612927	if(!bAppend || (getOrderQueueLength() == 1))12928	{12929		startHeadOrder();12930	}1293112932	if((getTeam() == GC.getGame().getActiveTeam()) || GC.getGame().isDebugMode())12933	{12934		if(isCitySelected())12935		{12936			DLLUI->setDirty(SelectionButtons_DIRTY_BIT, true);12937			DLLUI->setDirty(CityScreen_DIRTY_BIT, true);12938			DLLUI->setDirty(PlotListButtons_DIRTY_BIT, true);12939		}12940	}1294112942	DLLUI->setDirty(CityInfo_DIRTY_BIT, true);1294312944	auto_ptr<ICvCity1> pCity = GC.WrapCityPointer(this);12945	DLLUI->SetSpecificCityInfoDirty(pCity.get(), CITY_UPDATE_TYPE_PRODUCTION);12946}

Calls

Called by