Bazaar developer reference

CvUnitMission::PopMission(UnitHandle)

Defined in
CvUnitMission.cpp, line 348
Class
CvUnitMission
Hook name
CivHooks::CvUnitMission_PopMission

Hooks

static bool BeforeCvUnitMission_PopMission(UnitHandle hUnit);static void AfterCvUnitMission_PopMission(UnitHandle hUnit);static void ReplaceCvUnitMission_PopMission(void (*original)(UnitHandle), UnitHandle hUnit);CivRegisterBefore<CivHooks::CvUnitMission_PopMission>(host, &BeforeCvUnitMission_PopMission);CivRegisterAfter<CivHooks::CvUnitMission_PopMission>(host, &AfterCvUnitMission_PopMission);CivRegisterReplace<CivHooks::CvUnitMission_PopMission>(host, &ReplaceCvUnitMission_PopMission);

Code

347/// Retrieve next mission348void CvUnitMission::PopMission(UnitHandle hUnit)349{350	CvAssert(hUnit->getOwner() != NO_PLAYER);351352	// Update Resource info353	if(hUnit->getBuildType() != NO_BUILD)354	{355		ImprovementTypes eImprovement = NO_IMPROVEMENT;356		RouteTypes eRoute = NO_ROUTE;357358		CvBuildInfo* pkBuildInfo = GC.getBuildInfo(hUnit->getBuildType());359		if(pkBuildInfo)360		{361			if(pkBuildInfo->getImprovement() != NO_IMPROVEMENT)362			{363				eImprovement = (ImprovementTypes) pkBuildInfo->getImprovement();364			}365			else if(pkBuildInfo->getRoute() != NO_ROUTE)366			{367				eRoute = (RouteTypes) pkBuildInfo->getRoute();368			}369		}370371		int iNumResource;372373		// Update the amount of a Resource used up by popped Build374		for(int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)375		{376			iNumResource = 0;377378			if(eImprovement != NO_IMPROVEMENT)379			{380				CvImprovementEntry* pkImprovementInfo = GC.getImprovementInfo(eImprovement);381				if(pkImprovementInfo)382				{383					iNumResource += pkImprovementInfo->GetResourceQuantityRequirement(iResourceLoop);384				}385			}386			else if(eRoute != NO_ROUTE)387			{388				CvRouteInfo* pkRouteInfo = GC.getRouteInfo(eRoute);389				if(pkRouteInfo)390				{391					iNumResource += pkRouteInfo->getResourceQuantityRequirement(iResourceLoop);392				}393			}394395			if(iNumResource > 0)396			{397				GET_PLAYER(hUnit->getOwner()).changeNumResourceUsed((ResourceTypes) iResourceLoop, -iNumResource);398			}399		}400401		auto_ptr<ICvUnit1> pDllUnit(new CvDllUnit(hUnit.pointer()));402		gDLL->GameplayUnitWork(pDllUnit.get(), -1);403	}404405	MissionQueueNode* pTailNode = TailMissionQueueNode(hUnit->m_missionQueue);406407	if(pTailNode != NULL)408	{409		DeleteMissionQueueNode(hUnit, pTailNode);410	}411}

Calls

Called by