Hooks
static bool BeforeCvAIOperationQuickColonize_Init(CvAIOperationQuickColonize* self, int iID, PlayerTypes eOwner, PlayerTypes arg2, int iDefaultArea, CvCity* arg4, CvCity* arg5);static void AfterCvAIOperationQuickColonize_Init(CvAIOperationQuickColonize* self, int iID, PlayerTypes eOwner, PlayerTypes arg2, int iDefaultArea, CvCity* arg4, CvCity* arg5);static void ReplaceCvAIOperationQuickColonize_Init(void (*original)(CvAIOperationQuickColonize*, int, PlayerTypes, PlayerTypes, int, CvCity*, CvCity*), CvAIOperationQuickColonize* self, int iID, PlayerTypes eOwner, PlayerTypes arg2, int iDefaultArea, CvCity* arg4, CvCity* arg5);CivRegisterBefore<CivHooks::CvAIOperationQuickColonize_Init>(host, &BeforeCvAIOperationQuickColonize_Init);CivRegisterAfter<CivHooks::CvAIOperationQuickColonize_Init>(host, &AfterCvAIOperationQuickColonize_Init);CivRegisterReplace<CivHooks::CvAIOperationQuickColonize_Init>(host, &ReplaceCvAIOperationQuickColonize_Init);
Code
3339/// Kick off this operation3340void CvAIOperationQuickColonize::Init(int iID, PlayerTypes eOwner, PlayerTypes /*eEnemy*/, int iDefaultArea, CvCity* /*pTarget*/, CvCity* /*pMuster*/)3341{3342 CvUnit* pOurCivilian;3343 CvPlot* pTargetSite;33443345 Reset();3346 m_eMoveType = AI_OPERATION_MOVETYPE_SINGLE_HEX;3347 m_iID = iID;3348 m_eOwner = eOwner;3349 m_iTargetArea = iDefaultArea;33503351 // Find the free civilian (that triggered this operation)3352 pOurCivilian = FindBestCivilian();33533354 if(pOurCivilian != NULL && iID != -1)3355 {3356 // Find a destination (not worrying about safe paths)3357 pTargetSite = FindBestTarget(pOurCivilian, false);33583359 if(pTargetSite != NULL)3360 {3361 SetTargetPlot(pTargetSite);33623363 CvArmyAI* pArmyAI = GET_PLAYER(m_eOwner).addArmyAI();3364 if(pArmyAI)3365 {3366 m_viArmyIDs.push_back(pArmyAI->GetID());3367 pArmyAI->Init(pArmyAI->GetID(),m_eOwner,m_iID);3368 pArmyAI->SetFormationIndex(GetFormation());33693370 // Figure out the initial rally point - for this operation it is wherever our civilian is standing3371 pArmyAI->SetGoalPlot(pTargetSite);3372 CvPlot* pMusterPt = pOurCivilian->plot();3373 SetMusterPlot(pMusterPt);3374 pArmyAI->SetXY(pMusterPt->getX(), pMusterPt->getY());3375 pArmyAI->SetArmyAIState(ARMYAISTATE_MOVING_TO_DESTINATION);3376 SetDefaultArea(pMusterPt->getArea());33773378 // Add the settler to our army3379 pArmyAI->AddUnit(pOurCivilian->GetID(), 0);3380 m_bEscorted = false;33813382 m_eCurrentState = AI_OPERATION_STATE_MOVING_TO_TARGET;3383 LogOperationStart();3384 }3385 }33863387 else3388 {3389 // Lost our target, abort3390 m_eCurrentState = AI_OPERATION_STATE_ABORTED;3391 m_eAbortReason = AI_ABORT_LOST_TARGET;3392 }3393 }3394}