CvDiplomacyRequests::DoAIDiplomacy(PlayerTypes)
- Defined in
- CvDiplomacyRequests.cpp, line 542
- Class
- CvDiplomacyRequests
- Hook name
CivHooks::CvDiplomacyRequests_DoAIDiplomacy
Hooks
static bool BeforeCvDiplomacyRequests_DoAIDiplomacy(PlayerTypes eTargetPlayer);static void AfterCvDiplomacyRequests_DoAIDiplomacy(PlayerTypes eTargetPlayer);static void ReplaceCvDiplomacyRequests_DoAIDiplomacy(void (*original)(PlayerTypes), PlayerTypes eTargetPlayer);CivRegisterBefore<CivHooks::CvDiplomacyRequests_DoAIDiplomacy>(host, &BeforeCvDiplomacyRequests_DoAIDiplomacy);CivRegisterAfter<CivHooks::CvDiplomacyRequests_DoAIDiplomacy>(host, &AfterCvDiplomacyRequests_DoAIDiplomacy);CivRegisterReplace<CivHooks::CvDiplomacyRequests_DoAIDiplomacy>(host, &ReplaceCvDiplomacyRequests_DoAIDiplomacy);
Code
539// Have all the AIs do a diplomacy evaluation with the supplied player.540// Please note that the destination player may not be the active player.541// static542void CvDiplomacyRequests::DoAIDiplomacy(PlayerTypes eTargetPlayer)543{544 if(eTargetPlayer != NO_PLAYER)545 {546 ICvUserInterface2* pkIFace = GC.GetEngineUserInterface();547 // WARNING: Processing depends on the state of the interface!548 CvAssert(!CvPreGame::isNetworkMultiplayerGame());549550 // Don't process while a modal dialog is up or another diplo or popup is up.551 if(pkIFace->IsModalStackEmpty() && !pkIFace->isDiploOrPopupWaiting() && !pkIFace->isCityScreenUp())552 {553 CvPlayer& kTargetPlayer = GET_PLAYER((PlayerTypes) eTargetPlayer);554 CvDiplomacyRequests* pkTargetRequests = kTargetPlayer.GetDiplomacyRequests();555 if(pkTargetRequests)556 {557 if(!pkTargetRequests->HasPendingRequests())558 {559 PlayerTypes ePlayerLoop = pkTargetRequests->GetNextAIPlayer();560 if(ePlayerLoop != NO_PLAYER)561 {562 int iMaxCivPlayers = MAX_CIV_PLAYERS;563 while((int)ePlayerLoop < iMaxCivPlayers)564 {565 CvPlayer& kPlayer = GET_PLAYER(ePlayerLoop);566567 if(eTargetPlayer != ePlayerLoop && kPlayer.isAlive() && !kPlayer.isHuman() && !kPlayer.isMinorCiv() && !kPlayer.isBarbarian())568 {569 kPlayer.GetDiplomacyAI()->DoTurn(eTargetPlayer);570 if(pkTargetRequests->HasPendingRequests())571 {572 ePlayerLoop = (PlayerTypes)((int)ePlayerLoop + 1);573 break;574 }575 }576577 ePlayerLoop = (PlayerTypes)((int)ePlayerLoop + 1);578 }579580 pkTargetRequests->SetNextAIPlayer((((int)ePlayerLoop >= iMaxCivPlayers)?NO_PLAYER:ePlayerLoop));581 }582 }583 }584 }585 }586587}
Calls
- CvDiplomacyAI::DoTurn(PlayerTypes, DiplomacyPlayerType)
- CvDiplomacyRequests::GetNextAIPlayer() const
- CvDiplomacyRequests::HasPendingRequests() const
- CvDiplomacyRequests::SetNextAIPlayer(PlayerTypes)
- CvGlobals::GetEngineUserInterface()
- CvPlayer::GetDiplomacyAI() const
- CvPlayer::GetDiplomacyRequests() const
- CvPlayer::isAlive() const
- CvPlayer::isBarbarian() const
- CvPlayer::isHuman() const
- CvPlayer::isMinorCiv() const
- CvPlayerAI::getPlayer(PlayerTypes)
ICvUserInterface1::isCityScreenUpICvUserInterface1::isDiploOrPopupWaitingICvUserInterface1::IsModalStackEmpty