Bazaar developer reference

CvTeam::SetHasEmbassyAtTeam(TeamTypes, bool)

Defined in
CvTeam.cpp, line 4096
Class
CvTeam
Hook name
CivHooks::CvTeam_SetHasEmbassyAtTeam

Hooks

static bool BeforeCvTeam_SetHasEmbassyAtTeam(CvTeam* self, TeamTypes eIndex, bool bNewValue);static void AfterCvTeam_SetHasEmbassyAtTeam(CvTeam* self, TeamTypes eIndex, bool bNewValue);static void ReplaceCvTeam_SetHasEmbassyAtTeam(void (*original)(CvTeam*, TeamTypes, bool), CvTeam* self, TeamTypes eIndex, bool bNewValue);CivRegisterBefore<CivHooks::CvTeam_SetHasEmbassyAtTeam>(host, &BeforeCvTeam_SetHasEmbassyAtTeam);CivRegisterAfter<CivHooks::CvTeam_SetHasEmbassyAtTeam>(host, &AfterCvTeam_SetHasEmbassyAtTeam);CivRegisterReplace<CivHooks::CvTeam_SetHasEmbassyAtTeam>(host, &ReplaceCvTeam_SetHasEmbassyAtTeam);

Code

4096void CvTeam::SetHasEmbassyAtTeam(TeamTypes eIndex, bool bNewValue)4097{4098	CvAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");4099	CvAssertMsg(eIndex < MAX_TEAMS, "eIndex is expected to be within maximum bounds (invalid Index)");41004101	if(HasEmbassyAtTeam(eIndex) != bNewValue)4102	{4103		m_abEmbassy[eIndex] = bNewValue;4104		bool bRevealPlots = false;41054106		// find capital of team4107		// reveal hexes around capital4108		for(int iPlayer = 0; iPlayer < MAX_MAJOR_CIVS; iPlayer++)4109		{4110			PlayerTypes ePlayer = (PlayerTypes)iPlayer;4111			if(GET_PLAYER(ePlayer).getTeam() == eIndex)4112			{4113				CvCity* pCity = GET_PLAYER(ePlayer).getCapitalCity();4114				if(pCity)4115				{4116					CvPlot* pPlot = pCity->plot();4117					CvAssertMsg(pPlot, "Capital city lacks plot? How'd that happen?");4118					if(pPlot)4119					{4120						const int iPopRange = 2;4121						for(int iDX = -(iPopRange); iDX <= iPopRange; iDX++)4122						{4123							for(int iDY = -(iPopRange); iDY <= iPopRange; iDY++)4124							{4125								CvPlot* pLoopPlot = plotXYWithRangeCheck(pPlot->getX(), pPlot->getY(), iDX, iDY, iPopRange);4126								if(pLoopPlot == NULL)4127								{4128									continue;4129								}41304131								pLoopPlot->setRevealed(GetID(), true);4132							}4133						}4134						bRevealPlots = true;4135					}4136				}4137			}4138		}41394140		if(bRevealPlots)4141		{4142			GC.getMap().updateDeferredFog();4143		}41444145		GC.getMap().verifyUnitValidPlot();41464147		if((GetID() == GC.getGame().getActiveTeam()) || (eIndex == GC.getGame().getActiveTeam()))4148		{4149			DLLUI->setDirty(Score_DIRTY_BIT, true);4150		}41514152		// logging4153		for (uint uiMyPlayer = 0; uiMyPlayer < MAX_MAJOR_CIVS; uiMyPlayer++)4154		{4155			PlayerTypes eMyPlayer = (PlayerTypes)uiMyPlayer;4156			if (GET_PLAYER(eMyPlayer).getTeam() == m_eID)4157			{4158				for (uint uiOtherPlayer = 0; uiOtherPlayer < MAX_MAJOR_CIVS; uiOtherPlayer++)4159				{4160					PlayerTypes eOtherPlayer = (PlayerTypes)uiOtherPlayer;4161					CvPlayer& kOtherPlayer = GET_PLAYER(eOtherPlayer);4162					if (kOtherPlayer.getTeam() == eIndex && kOtherPlayer.isAlive())4163					{4164						if (bNewValue)4165						{4166							GET_PLAYER(eMyPlayer).GetDiplomacyAI()->LogOpenEmbassy(eOtherPlayer);4167						}4168						else4169						{4170							GET_PLAYER(eMyPlayer).GetDiplomacyAI()->LogCloseEmbassy(eOtherPlayer);4171						}4172					}4173				}4174			}4175		}4176	}4177}

Calls

Called by