CvAIOperationNavalAttack::ArmyInPosition(CvArmyAI *)
- Defined in
- CvAIOperation.cpp, line 5430
- Class
- CvAIOperationNavalAttack
- Hook name
CivHooks::CvAIOperationNavalAttack_ArmyInPosition- Overrides
- CvAINavalEscortedOperation::ArmyInPosition(CvArmyAI *)
Hooks
static bool BeforeCvAIOperationNavalAttack_ArmyInPosition(CvAIOperationNavalAttack* self, CvArmyAI* pArmy, bool& result);static void AfterCvAIOperationNavalAttack_ArmyInPosition(CvAIOperationNavalAttack* self, CvArmyAI* pArmy, bool& result);static bool ReplaceCvAIOperationNavalAttack_ArmyInPosition(bool (*original)(CvAIOperationNavalAttack*, CvArmyAI*), CvAIOperationNavalAttack* self, CvArmyAI* pArmy);CivRegisterBefore<CivHooks::CvAIOperationNavalAttack_ArmyInPosition>(host, &BeforeCvAIOperationNavalAttack_ArmyInPosition);CivRegisterAfter<CivHooks::CvAIOperationNavalAttack_ArmyInPosition>(host, &AfterCvAIOperationNavalAttack_ArmyInPosition);CivRegisterReplace<CivHooks::CvAIOperationNavalAttack_ArmyInPosition>(host, &ReplaceCvAIOperationNavalAttack_ArmyInPosition);
Code
5429/// If at target, found city; if at muster point, merge settler and escort and move out5430bool CvAIOperationNavalAttack::ArmyInPosition(CvArmyAI* pArmy)5431{5432 switch(m_eCurrentState)5433 {5434 // See if reached our target, if so give control of these units to the tactical AI5435 case AI_OPERATION_STATE_MOVING_TO_TARGET:5436 {5437 CvPlot *pCenterOfMass = pArmy->GetCenterOfMass(DOMAIN_SEA);54385439 // Are we within tactical range of our target? (larger than usual range for a naval attack)5440 if(pCenterOfMass && plotDistance(pCenterOfMass->getX(), pCenterOfMass->getY(), m_iTargetX, m_iTargetY) <= GC.getAI_OPERATIONAL_CITY_ATTACK_DEPLOY_RANGE() * 2)5441 {5442 // Notify Diplo AI we're in place for attack5443 GET_PLAYER(GetOwner()).GetDiplomacyAI()->SetMusteringForAttack(GetEnemy(), true);54445445 // Notify tactical AI to focus on this area5446 CvTemporaryZone zone;5447 zone.SetX(GetTargetPlot()->getX());5448 zone.SetY(GetTargetPlot()->getY());5449 zone.SetTargetType(AI_TACTICAL_TARGET_CITY);5450 zone.SetLastTurn(GC.getGame().getGameTurn() + GC.getAI_TACTICAL_MAP_TEMP_ZONE_TURNS());5451 zone.SetNavalInvasion(true);5452 GET_PLAYER(m_eOwner).GetTacticalAI()->AddTemporaryZone(zone);54535454 m_eCurrentState = AI_OPERATION_STATE_SUCCESSFUL_FINISH;5455 return true;5456 }5457 }5458 break;54595460 // In all other cases use base class version5461 case AI_OPERATION_STATE_GATHERING_FORCES:5462 case AI_OPERATION_STATE_ABORTED:5463 case AI_OPERATION_STATE_RECRUITING_UNITS:5464 case AI_OPERATION_STATE_AT_TARGET:5465 return CvAIOperation::ArmyInPosition(pArmy);5466 break;5467 };54685469 return false;5470}
Calls
- CvAIOperation::ArmyInPosition(CvArmyAI *)
- CvAIOperation::GetEnemy() const
- CvAIOperation::GetOwner() const
- CvAIOperation::GetTargetPlot() const
- CvArmyAI::GetCenterOfMass(DomainTypes)
- CvDiplomacyAI::SetMusteringForAttack(PlayerTypes, bool)
- CvGame::getGameTurn()
- CvGlobals::getAI_OPERATIONAL_CITY_ATTACK_DEPLOY_RANGE()
- CvGlobals::getAI_TACTICAL_MAP_TEMP_ZONE_TURNS()
- CvGlobals::getGame()
- CvPlayer::GetDiplomacyAI() const
- CvPlayer::GetTacticalAI() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlot::getX() const
- CvPlot::getY() const
- CvTacticalAI::AddTemporaryZone(CvTemporaryZone)
CvTemporaryZone::CvTemporaryZone- CvTemporaryZone::CvTemporaryZone()
- CvTemporaryZone::SetLastTurn(int)
- CvTemporaryZone::SetNavalInvasion(bool)
- CvTemporaryZone::SetTargetType(AITacticalTargetType)
- CvTemporaryZone::SetX(int)
- CvTemporaryZone::SetY(int)
- plotDistance(int, int, int, int)