Bazaar developer reference

CvGameTrade::ClearAllCivTradeRoutes(PlayerTypes)

Defined in
CvTradeClasses.cpp, line 1011
Class
CvGameTrade
Hook name
CivHooks::CvGameTrade_ClearAllCivTradeRoutes

Hooks

static bool BeforeCvGameTrade_ClearAllCivTradeRoutes(CvGameTrade* self, PlayerTypes ePlayer);static void AfterCvGameTrade_ClearAllCivTradeRoutes(CvGameTrade* self, PlayerTypes ePlayer);static void ReplaceCvGameTrade_ClearAllCivTradeRoutes(void (*original)(CvGameTrade*, PlayerTypes), CvGameTrade* self, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvGameTrade_ClearAllCivTradeRoutes>(host, &BeforeCvGameTrade_ClearAllCivTradeRoutes);CivRegisterAfter<CivHooks::CvGameTrade_ClearAllCivTradeRoutes>(host, &AfterCvGameTrade_ClearAllCivTradeRoutes);CivRegisterReplace<CivHooks::CvGameTrade_ClearAllCivTradeRoutes>(host, &ReplaceCvGameTrade_ClearAllCivTradeRoutes);

Code

1010//  Reset all Civ to Civ trade routes involving ePlayer.  Trade routes involving city-states are not reset.1011void CvGameTrade::ClearAllCivTradeRoutes (PlayerTypes ePlayer)1012{1013	for (uint ui = 0; ui < m_aTradeConnections.size(); ui++)1014	{1015		if (IsTradeRouteIndexEmpty(ui))1016		{1017			continue;1018		}10191020		bool bMatchesOrigin = (m_aTradeConnections[ui].m_eOriginOwner == ePlayer);1021		bool bMatchesDest = (m_aTradeConnections[ui].m_eDestOwner == ePlayer);1022		bool bCityStateRoute = (GET_PLAYER(m_aTradeConnections[ui].m_eOriginOwner).isMinorCiv() || GET_PLAYER(m_aTradeConnections[ui].m_eDestOwner).isMinorCiv());10231024		if (!bCityStateRoute)1025		{1026			if (bMatchesOrigin && bMatchesDest)1027			{1028				// Internal trade route - don't wipe it1029				continue;1030			}1031			else if (bMatchesOrigin || bMatchesDest)1032			{1033				// if the destination was wiped, the origin gets a trade unit back1034				if (GET_PLAYER(m_aTradeConnections[ui].m_eOriginOwner).isAlive())1035				{1036#if defined(MOD_BUGFIX_UNITCLASS_NOT_UNIT)1037					CvPlayer& kPlayer = GET_PLAYER(m_aTradeConnections[ui].m_eOriginOwner);1038					UnitTypes eUnitType = kPlayer.GetTrade()->GetTradeUnit(m_aTradeConnections[ui].m_eDomain, &kPlayer);1039#else1040					UnitTypes eUnitType = GET_PLAYER(m_aTradeConnections[ui].m_eOriginOwner).GetTrade()->GetTradeUnit(m_aTradeConnections[ui].m_eDomain);1041#endif1042					CvAssertMsg(eUnitType != NO_UNIT, "No trade unit found");1043					if (eUnitType != NO_UNIT)1044					{1045						GET_PLAYER(m_aTradeConnections[ui].m_eOriginOwner).initUnit(eUnitType, m_aTradeConnections[ui].m_iOriginX, m_aTradeConnections[ui].m_iOriginY, UNITAI_TRADE_UNIT);1046					}1047				}10481049				EmptyTradeRoute(ui);1050			}1051		}1052	}1053}

Calls

Called by