CvPlayerTrade::CanCreateTradeRoute(PlayerTypes, DomainTypes)
- Defined in
- CvTradeClasses.cpp, line 2841
- Class
- CvPlayerTrade
- Hook name
CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes
Hooks
static bool BeforeCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes(CvPlayerTrade* self, PlayerTypes eOtherPlayer, DomainTypes eDomain, bool& result);static void AfterCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes(CvPlayerTrade* self, PlayerTypes eOtherPlayer, DomainTypes eDomain, bool& result);static bool ReplaceCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes(bool (*original)(CvPlayerTrade*, PlayerTypes, DomainTypes), CvPlayerTrade* self, PlayerTypes eOtherPlayer, DomainTypes eDomain);CivRegisterBefore<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes>(host, &BeforeCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes);CivRegisterAfter<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes>(host, &AfterCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes);CivRegisterReplace<CivHooks::CvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes>(host, &ReplaceCvPlayerTrade_CanCreateTradeRoute_with_PlayerTypes_DomainTypes);
Code
2841bool CvPlayerTrade::CanCreateTradeRoute(PlayerTypes eOtherPlayer, DomainTypes eDomain)2842{2843 CvGameTrade* pGameTrade = GC.getGame().GetGameTrade();28442845 int iCityLoop;2846 CvCity* pLoopCity;2847 for(pLoopCity = m_pPlayer->firstCity(&iCityLoop); pLoopCity != NULL; pLoopCity = m_pPlayer->nextCity(&iCityLoop))2848 {2849 int iCityLoop2;2850 CvCity* pLoopCity2;2851 for (pLoopCity2 = GET_PLAYER(eOtherPlayer).firstCity(&iCityLoop2); pLoopCity2 != NULL; pLoopCity2 = GET_PLAYER(eOtherPlayer).nextCity(&iCityLoop2))2852 {2853 for (uint uiConnectionTypes = 0; uiConnectionTypes < NUM_TRADE_CONNECTION_TYPES; uiConnectionTypes++)2854 {2855 // Check the route, but not the path2856 if (CanCreateTradeRoute(pLoopCity, pLoopCity2, eDomain, (TradeConnectionType)uiConnectionTypes, false, false))2857 {2858 // Check the path2859 if (pGameTrade->IsValidTradeRoutePath(pLoopCity, pLoopCity2, eDomain))2860 return true;28612862 // else we can just break out of the loop2863 break;2864 }2865 }2866 }2867 }28682869 return false;2870}
Calls
- CvGame::GetGameTrade()
- CvGameTrade::IsValidTradeRoutePath(CvCity *, CvCity *, DomainTypes)
- CvGlobals::getGame()
- CvPlayer::firstCity(int *, bool)
- CvPlayer::nextCity(int *, bool)
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerTrade::CanCreateTradeRoute(CvCity *, CvCity *, DomainTypes, TradeConnectionType, bool, bool)