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
BaseVector::operator[]BaseVector::size- CvGameTrade::EmptyTradeRoute(int)
- CvGameTrade::IsTradeRouteIndexEmpty(int)
- CvPlayer::GetTrade() const
- CvPlayer::initUnit(UnitTypes, int, int, UnitAITypes, DirectionTypes, bool, bool, int, int)
- CvPlayer::isAlive() const
- CvPlayer::isMinorCiv() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerTrade::GetTradeUnit(DomainTypes, CvPlayer *)