CvMilitaryAI::IsAttackReady(MultiunitFormationTypes, AIOperationTypes) const
- Defined in
- CvMilitaryAI.cpp, line 3558
- Class
- CvMilitaryAI
- Hook name
CivHooks::CvMilitaryAI_IsAttackReady
Hooks
static bool BeforeCvMilitaryAI_IsAttackReady(const CvMilitaryAI* self, MultiunitFormationTypes eFormation, AIOperationTypes eOperationType, bool& result);static void AfterCvMilitaryAI_IsAttackReady(const CvMilitaryAI* self, MultiunitFormationTypes eFormation, AIOperationTypes eOperationType, bool& result);static bool ReplaceCvMilitaryAI_IsAttackReady(bool (*original)(const CvMilitaryAI*, MultiunitFormationTypes, AIOperationTypes), const CvMilitaryAI* self, MultiunitFormationTypes eFormation, AIOperationTypes eOperationType);CivRegisterBefore<CivHooks::CvMilitaryAI_IsAttackReady>(host, &BeforeCvMilitaryAI_IsAttackReady);CivRegisterAfter<CivHooks::CvMilitaryAI_IsAttackReady>(host, &AfterCvMilitaryAI_IsAttackReady);CivRegisterReplace<CivHooks::CvMilitaryAI_IsAttackReady>(host, &ReplaceCvMilitaryAI_IsAttackReady);
Code
3557/// Do we have the forces at hand for an attack?3558bool CvMilitaryAI::IsAttackReady(MultiunitFormationTypes eFormation, AIOperationTypes eOperationType) const3559{3560 int iOperationID;35613562 // Do we already have an operation of this type that is building units?3563 bool bHasOperationUnderway = m_pPlayer->haveAIOperationOfType(eOperationType, &iOperationID, NO_PLAYER);3564 if (bHasOperationUnderway)3565 {3566 if (m_pPlayer->getAIOperation(iOperationID)->GetOperationState() != AI_OPERATION_STATE_RECRUITING_UNITS)3567 {3568 return false;3569 }3570 }35713572 int iNumRequiredSlots = 0;3573 int iLandReservesUsed = 0;3574 int iFilledSlots = 0;35753576 bool bRequiresNavalMoves = false;3577 if(eFormation == MUFORMATION_NAVAL_INVASION || eFormation == MUFORMATION_NAVAL_SQUADRON || eFormation == MUFORMATION_CITY_STATE_INVASION || eFormation == MUFORMATION_PURE_NAVAL_CITY_ATTACK)3578 {3579 bRequiresNavalMoves = true;3580 }35813582 iFilledSlots = MilitaryAIHelpers::NumberOfFillableSlots(m_pPlayer, eFormation, bRequiresNavalMoves, &iNumRequiredSlots, &iLandReservesUsed);3583 if(iFilledSlots >= iNumRequiredSlots)3584 {3585 return true;3586 }3587 else3588 {3589 return false;3590 }3591}