Bazaar developer reference

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

Called by