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
- CvBuildInfo::getImprovement() const
- CvBuildInfo::getRoute() const
- CvDllUnit::CvDllUnit(CvUnit *)
- CvGlobals::getBuildInfo(BuildTypes)
- CvGlobals::getDLLIFace()
- CvGlobals::getImprovementInfo(ImprovementTypes)
- CvGlobals::getNumResourceInfos()
- CvGlobals::getRouteInfo(RouteTypes)
- CvImprovementEntry::GetResourceQuantityRequirement(int) const
- CvPlayer::changeNumResourceUsed(ResourceTypes, int)
- CvPlayerAI::getPlayer(PlayerTypes)
- CvRouteInfo::getResourceQuantityRequirement(int) const
- CvUnit::getBuildType() const
- CvUnit::getOwner() const
- CvUnitMission::DeleteMissionQueueNode(UnitHandle, MissionData *)
- CvUnitMission::TailMissionQueueNode(MissionQueue &)
FObjectHandle::FObjectHandleFObjectHandle::operator->FObjectHandle::pointerICvEngineUtility1::GameplayUnitWorkstd::auto_ptr::auto_ptrstd::auto_ptr::get