CvUnitMission::HasCompletedMoveMission(UnitHandle)
- Defined in
- CvUnitMission.cpp, line 2266
- Class
- CvUnitMission
- Hook name
CivHooks::CvUnitMission_HasCompletedMoveMission- Lua events
GameEvents.CustomMissionCompleted
Hooks
static bool BeforeCvUnitMission_HasCompletedMoveMission(UnitHandle hUnit, bool& result);static void AfterCvUnitMission_HasCompletedMoveMission(UnitHandle hUnit, bool& result);static bool ReplaceCvUnitMission_HasCompletedMoveMission(bool (*original)(UnitHandle), UnitHandle hUnit);CivRegisterBefore<CivHooks::CvUnitMission_HasCompletedMoveMission>(host, &BeforeCvUnitMission_HasCompletedMoveMission);CivRegisterAfter<CivHooks::CvUnitMission_HasCompletedMoveMission>(host, &AfterCvUnitMission_HasCompletedMoveMission);CivRegisterReplace<CivHooks::CvUnitMission_HasCompletedMoveMission>(host, &ReplaceCvUnitMission_HasCompletedMoveMission);
Code
2265// Returns true if the is a move mission at the head of the unit queue and it is complete2266bool CvUnitMission::HasCompletedMoveMission(UnitHandle hUnit)2267{2268 MissionQueueNode* pkMissionNode;2269 if((pkMissionNode = HeadMissionQueueNode(hUnit->m_missionQueue)) != NULL)2270 {2271 MissionData& kMissionData = *pkMissionNode;2272 if((kMissionData.eMissionType == CvTypes::getMISSION_MOVE_TO()) ||2273 (kMissionData.eMissionType == CvTypes::getMISSION_ROUTE_TO()) ||2274 (kMissionData.eMissionType == CvTypes::getMISSION_MOVE_TO_UNIT()))2275 {2276 CvPlot* pTargetPlot = NULL;22772278 if(kMissionData.eMissionType == CvTypes::getMISSION_MOVE_TO_UNIT())2279 {2280 UnitHandle pTargetUnit = GET_PLAYER((PlayerTypes)kMissionData.iData1).getUnit(kMissionData.iData2);2281 if(pTargetUnit)2282 {2283 pTargetPlot = pTargetUnit->plot();2284 }2285 else2286 {2287 return true; // Our unit is gone, assume we are done.2288 }2289 }2290 else2291 {2292 pTargetPlot = GC.getMap().plot(kMissionData.iData1, kMissionData.iData2);2293 }22942295 if(pTargetPlot && hUnit->atPlot(*pTargetPlot))2296 {2297 return true;2298 }2299 }2300#if defined(MOD_EVENTS_CUSTOM_MISSIONS)2301 else if (MOD_EVENTS_CUSTOM_MISSIONS) {2302 if (GAMEEVENTINVOKE_TESTANY(GAMEEVENT_CustomMissionCompleted, hUnit->getOwner(), hUnit->GetID(), kMissionData.eMissionType, kMissionData.iData1, kMissionData.iData2, kMissionData.iFlags, kMissionData.iPushTurn) == GAMEEVENTRETURN_TRUE) {2303 return true;2304 }2305 }2306#endif2307 }23082309 return false;2310}
Calls
- CustomMods::eventTestAny(const char *, const char *, ...)
- CustomMods::isEVENTS_CUSTOM_MISSIONS()
- CvGlobals::getMap()
- CvMap::plot(int, int) const
- CvPlayer::getUnit(int)
- CvPlayerAI::getPlayer(PlayerTypes)
- CvTypes::getMISSION_MOVE_TO()
- CvTypes::getMISSION_MOVE_TO_UNIT()
- CvTypes::getMISSION_ROUTE_TO()
- CvUnit::atPlot(const CvPlot &) const
- CvUnit::GetID() const
- CvUnit::getOwner() const
- CvUnit::plot() const
- CvUnitMission::HeadMissionQueueNode(MissionQueue &)
FObjectHandle::FObjectHandleFObjectHandle::operator boolFObjectHandle::operator->