CvAIOperationPureNavalCityAttack::ArmyInPosition(CvArmyAI *)
- Defined in
- CvAIOperation.cpp, line 4639
- Class
- CvAIOperationPureNavalCityAttack
- Hook name
CivHooks::CvAIOperationPureNavalCityAttack_ArmyInPosition- Overrides
- CvAINavalOperation::ArmyInPosition(CvArmyAI *)
Hooks
static bool BeforeCvAIOperationPureNavalCityAttack_ArmyInPosition(CvAIOperationPureNavalCityAttack* self, CvArmyAI* pArmy, bool& result);static void AfterCvAIOperationPureNavalCityAttack_ArmyInPosition(CvAIOperationPureNavalCityAttack* self, CvArmyAI* pArmy, bool& result);static bool ReplaceCvAIOperationPureNavalCityAttack_ArmyInPosition(bool (*original)(CvAIOperationPureNavalCityAttack*, CvArmyAI*), CvAIOperationPureNavalCityAttack* self, CvArmyAI* pArmy);CivRegisterBefore<CivHooks::CvAIOperationPureNavalCityAttack_ArmyInPosition>(host, &BeforeCvAIOperationPureNavalCityAttack_ArmyInPosition);CivRegisterAfter<CivHooks::CvAIOperationPureNavalCityAttack_ArmyInPosition>(host, &AfterCvAIOperationPureNavalCityAttack_ArmyInPosition);CivRegisterReplace<CivHooks::CvAIOperationPureNavalCityAttack_ArmyInPosition>(host, &ReplaceCvAIOperationPureNavalCityAttack_ArmyInPosition);
Code
4638/// Same as default version except if just gathered forces and this operation never reaches a final target (just keeps attacking until dead or the operation is ended)4639bool CvAIOperationPureNavalCityAttack::ArmyInPosition(CvArmyAI* pArmy)4640{4641 bool bStateChanged = false;46424643 switch(m_eCurrentState)4644 {4645 // If we were gathering forces, let's make sure a better target hasn't presented itself4646 case AI_OPERATION_STATE_GATHERING_FORCES:4647 {4648 // First do base case processing4649 bStateChanged = CvAIOperation::ArmyInPosition(pArmy);46504651 // Is target still under enemy control?4652 CvPlot* pTarget = GetTargetPlot();4653 if(pTarget->getOwner() != m_eEnemy)4654 {4655 m_eCurrentState = AI_OPERATION_STATE_ABORTED;4656 m_eAbortReason = AI_ABORT_TARGET_ALREADY_CAPTURED;4657 }4658 }4659 break;46604661 // See if within 2 spaces of our target, if so give control of these units to the tactical AI4662 case AI_OPERATION_STATE_MOVING_TO_TARGET:4663 {4664 if (plotDistance(pArmy->Plot()->getX(), pArmy->Plot()->getY(), GetTargetPlot()->getX(), GetTargetPlot()->getY()) < 2)4665 {4666 // Notify tactical AI to focus on this area4667 CvTemporaryZone zone;4668 zone.SetX(GetTargetPlot()->getX());4669 zone.SetY(GetTargetPlot()->getY());4670 zone.SetTargetType(AI_TACTICAL_TARGET_CITY);4671 zone.SetLastTurn(GC.getGame().getGameTurn() + GC.getAI_TACTICAL_MAP_TEMP_ZONE_TURNS());4672 GET_PLAYER(m_eOwner).GetTacticalAI()->AddTemporaryZone(zone);46734674 m_eCurrentState = AI_OPERATION_STATE_SUCCESSFUL_FINISH;4675 }4676 }4677 break;46784679 // In all other cases use base class version4680 case AI_OPERATION_STATE_ABORTED:4681 case AI_OPERATION_STATE_RECRUITING_UNITS:4682 case AI_OPERATION_STATE_AT_TARGET:4683 return CvAIOperation::ArmyInPosition(pArmy);4684 break;4685 };46864687 return bStateChanged;4688}
Calls
- CvAIOperation::ArmyInPosition(CvArmyAI *)
- CvAIOperation::GetTargetPlot() const
- CvArmyAI::Plot() const
- CvGame::getGameTurn()
- CvGlobals::getAI_TACTICAL_MAP_TEMP_ZONE_TURNS()
- CvGlobals::getGame()
- CvPlayer::GetTacticalAI() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlot::getOwner() const
- CvPlot::getX() const
- CvPlot::getY() const
- CvTacticalAI::AddTemporaryZone(CvTemporaryZone)
CvTemporaryZone::CvTemporaryZone- CvTemporaryZone::CvTemporaryZone()
- CvTemporaryZone::SetLastTurn(int)
- CvTemporaryZone::SetTargetType(AITacticalTargetType)
- CvTemporaryZone::SetX(int)
- CvTemporaryZone::SetY(int)
- plotDistance(int, int, int, int)