Bazaar developer reference

CvTeam::makeHasMet(TeamTypes, bool)

Defined in
CvTeam.cpp, line 3642
Class
CvTeam
Hook name
CivHooks::CvTeam_makeHasMet

Hooks

static bool BeforeCvTeam_makeHasMet(CvTeam* self, TeamTypes eIndex, bool bSuppressMessages);static void AfterCvTeam_makeHasMet(CvTeam* self, TeamTypes eIndex, bool bSuppressMessages);static void ReplaceCvTeam_makeHasMet(void (*original)(CvTeam*, TeamTypes, bool), CvTeam* self, TeamTypes eIndex, bool bSuppressMessages);CivRegisterBefore<CivHooks::CvTeam_makeHasMet>(host, &BeforeCvTeam_makeHasMet);CivRegisterAfter<CivHooks::CvTeam_makeHasMet>(host, &AfterCvTeam_makeHasMet);CivRegisterReplace<CivHooks::CvTeam_makeHasMet>(host, &ReplaceCvTeam_makeHasMet);

Code

3642void CvTeam::makeHasMet(TeamTypes eIndex, bool bSuppressMessages)3643{3644	int iI;36453646	CvAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");3647	CvAssertMsg(eIndex < MAX_TEAMS, "eIndex is expected to be within maximum bounds (invalid Index)");36483649	if(!isHasMet(eIndex))3650	{3651		m_abHasMet[eIndex] = true;36523653		SetTurnTeamMet(eIndex, GC.getGame().getGameTurn());36543655		updateTechShare();36563657		if(GC.getGame().isOption(GAMEOPTION_ALWAYS_WAR))3658		{3659			if(isHuman())3660			{3661				if(GetID() != eIndex)3662				{3663#if defined(MOD_EVENTS_WAR_AND_PEACE)3664					declareWar(eIndex, false, getLeaderID());3665#else3666					declareWar(eIndex);3667#endif3668				}3669			}3670		}36713672		int iMyPlayersLoop;3673		PlayerTypes eMyPlayer;36743675		int iTheirPlayersLoop;3676		PlayerTypes eTheirPlayer;36773678		int iThirdPlayersLoop;3679		PlayerTypes eThirdPlayer;36803681		// First Contact in Diplo AI (Civ 5)3682		for(iMyPlayersLoop = 0; iMyPlayersLoop < MAX_CIV_PLAYERS; iMyPlayersLoop++)3683		{3684			eMyPlayer = (PlayerTypes) iMyPlayersLoop;36853686			if(GET_PLAYER(eMyPlayer).isAlive())3687			{3688				if(GET_PLAYER(eMyPlayer).getTeam() == GetID())3689				{3690					// Now loop through players on Their team3691					for(iTheirPlayersLoop = 0; iTheirPlayersLoop < MAX_CIV_PLAYERS; iTheirPlayersLoop++)3692					{3693						eTheirPlayer = (PlayerTypes) iTheirPlayersLoop;36943695						// Don't calculate proximity to oneself!3696						if(eMyPlayer != eTheirPlayer)3697						{3698							if(GET_PLAYER(eTheirPlayer).isAlive())3699							{3700								if(GET_PLAYER(eTheirPlayer).getTeam() == eIndex)3701								{3702									// Begin contact stuff here37033704									// Update Proximity between players3705									GET_PLAYER(eMyPlayer).DoUpdateProximityToPlayer(eTheirPlayer);3706									GET_PLAYER(eTheirPlayer).DoUpdateProximityToPlayer(eMyPlayer);37073708									// First contact Diplo changes (no Minors)3709									if(!isMinorCiv())3710									{3711										GET_PLAYER(eMyPlayer).GetDiplomacyAI()->DoFirstContact(eTheirPlayer);3712									}37133714									// THIRD party loop - let everyone else know that someone met someone!3715									for(iThirdPlayersLoop = 0; iThirdPlayersLoop < MAX_CIV_PLAYERS; iThirdPlayersLoop++)3716									{3717										eThirdPlayer = (PlayerTypes) iThirdPlayersLoop;37183719										if(GET_PLAYER(eThirdPlayer).isAlive())3720										{3721											// Don't notify diplo AI if we're the one meeting or the one being met3722											if(eThirdPlayer != eMyPlayer && eThirdPlayer != eTheirPlayer)3723											{3724												GET_PLAYER(eThirdPlayer).GetDiplomacyAI()->DoPlayerMetSomeone(eMyPlayer, eTheirPlayer);3725											}3726										}3727									}3728								}3729							}3730						}3731					}3732				}3733			}3734		}37353736		if(GET_TEAM(eIndex).isHuman())3737		{3738			for(iI = 0; iI < MAX_PLAYERS; iI++)3739			{3740				if(GET_PLAYER((PlayerTypes)iI).isAlive())3741				{3742					if(GET_PLAYER((PlayerTypes)iI).getTeam() == GetID())3743					{3744						if(!(GET_PLAYER((PlayerTypes)iI).isHuman()))3745						{3746							GET_PLAYER((PlayerTypes)iI).clearResearchQueue();3747							//GET_PLAYER((PlayerTypes)iI).AI_makeProductionDirty();3748						}3749					}3750				}3751			}3752		}37533754		if((GetID() == GC.getGame().getActiveTeam()) || (eIndex == GC.getGame().getActiveTeam()))3755		{3756			DLLUI->setDirty(Score_DIRTY_BIT, true);3757		}37583759		if(GET_TEAM(eIndex).isMinorCiv())3760		{3761			int iCapitalX = -1;3762			int iCapitalY = -1;3763			int iCapitalID = -1;37643765			// Minor reveals his capital to the player so that he can click on the City to contact3766			CvCity* pCap = GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).getCapitalCity();3767			if(pCap)3768			{3769				iCapitalX  = pCap->getX();3770				iCapitalY  = pCap->getY();3771				iCapitalID = pCap->GetID();3772				CvPlot* pCapPlot = pCap->plot();3773				if(pCapPlot)3774				{3775					pCapPlot->setRevealed(GetID(), true);3776					GC.getMap().updateDeferredFog();3777				}3778			}37793780			// First contact with major stuff3781			if(!isMinorCiv())3782			{3783				GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).GetMinorCivAI()->DoFirstContactWithMajor(GetID(), /*bSuppressMessages*/ isAtWar(eIndex));3784			}37853786			if(!isAtWar(eIndex))3787			{3788				// Notify the Team that they met someone3789				if(!bSuppressMessages)3790				{3791					CvString strBuffer = GetLocalizedText("TXT_KEY_NOTIFICATION_MET_MINOR_CIV", GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).getNameKey());3792					CvString strSummary = GetLocalizedText("TXT_KEY_NOTIFICATION_SUMMARY_MET_MINOR_CIV", GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).getNameKey());37933794					AddNotification(NOTIFICATION_MET_MINOR, strBuffer, strSummary, iCapitalX, iCapitalY, iCapitalID);3795				}3796			}3797		}37983799		// Report event3800		gDLL->GameplayMetTeam(GetID(), eIndex);3801	}3802}

Calls

Called by