Bazaar developer reference

CvPlayerTrade::GetNumTradeRoutesPossible()

Defined in
CvTradeClasses.cpp, line 3674
Class
CvPlayerTrade
Hook name
CivHooks::CvPlayerTrade_GetNumTradeRoutesPossible

Hooks

static bool BeforeCvPlayerTrade_GetNumTradeRoutesPossible(CvPlayerTrade* self, uint& result);static void AfterCvPlayerTrade_GetNumTradeRoutesPossible(CvPlayerTrade* self, uint& result);static uint ReplaceCvPlayerTrade_GetNumTradeRoutesPossible(uint (*original)(CvPlayerTrade*), CvPlayerTrade* self);CivRegisterBefore<CivHooks::CvPlayerTrade_GetNumTradeRoutesPossible>(host, &BeforeCvPlayerTrade_GetNumTradeRoutesPossible);CivRegisterAfter<CivHooks::CvPlayerTrade_GetNumTradeRoutesPossible>(host, &AfterCvPlayerTrade_GetNumTradeRoutesPossible);CivRegisterReplace<CivHooks::CvPlayerTrade_GetNumTradeRoutesPossible>(host, &ReplaceCvPlayerTrade_GetNumTradeRoutesPossible);

Code

3674uint CvPlayerTrade::GetNumTradeRoutesPossible (void)3675{3676	int iNumRoutes = 0;36773678	CvAssert(m_pPlayer->getCivilizationType() != NO_CIVILIZATION);3679	if (m_pPlayer->getCivilizationType() == NO_CIVILIZATION)3680		return 0;36813682	CvPlayerTechs* pMyPlayerTechs = m_pPlayer->GetPlayerTechs();3683	CvTeamTechs* pMyTeamTechs = GET_TEAM(GET_PLAYER(m_pPlayer->GetID()).getTeam()).GetTeamTechs();3684	CvTechEntry* pTechInfo = NULL; 36853686	CvTechXMLEntries* pMyPlayerTechEntries = pMyPlayerTechs->GetTechs();3687	CvAssert(pMyPlayerTechEntries);3688	if (pMyPlayerTechEntries == NULL)3689		return 0;36903691	for(int iTechLoop = 0; iTechLoop < pMyPlayerTechEntries->GetNumTechs(); iTechLoop++)3692	{3693		TechTypes eTech = (TechTypes)iTechLoop;3694		if (!pMyTeamTechs->HasTech(eTech))3695		{3696			continue;3697		}36983699		pTechInfo = pMyPlayerTechEntries->GetEntry(eTech);3700		CvAssertMsg(pTechInfo, "null tech entry");3701		if (pTechInfo)3702		{3703			iNumRoutes += pTechInfo->GetNumInternationalTradeRoutesChange();3704		}3705	}37063707	CvCivilizationInfo& kCivInfo = m_pPlayer->getCivilizationInfo();3708	int iLoop = 0;3709	CvCity* pLoopCity;3710	for(pLoopCity = m_pPlayer->firstCity(&iLoop); pLoopCity != NULL; pLoopCity = m_pPlayer->nextCity(&iLoop))3711	{3712		for (int iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)3713		{3714			BuildingTypes eBuilding = (BuildingTypes)kCivInfo.getCivilizationBuildings(iI);3715			if(eBuilding != NO_BUILDING)3716			{3717				CvBuildingEntry* pBuildingEntry = GC.GetGameBuildings()->GetEntry(eBuilding);3718				if (!pBuildingEntry)3719				{3720					continue;3721				}37223723				if (pBuildingEntry)3724				{3725					if (pLoopCity->GetCityBuildings()->GetNumBuilding((BuildingTypes)pBuildingEntry->GetID()))3726					{3727						int iNumRouteBonus = pBuildingEntry->GetNumTradeRouteBonus();3728						if (iNumRouteBonus != 0)3729						{3730#if defined(MOD_BUGFIX_MINOR)3731							iNumRoutes += (iNumRouteBonus * pLoopCity->GetCityBuildings()->GetNumBuilding((BuildingTypes)pBuildingEntry->GetID()));3732#else3733							iNumRoutes += iNumRouteBonus;3734#endif3735						}3736					}3737				}3738			}3739		}3740	}37413742	int iModifier = 100 + m_pPlayer->GetPlayerTraits()->GetNumTradeRoutesModifier();3743	iNumRoutes *= iModifier;3744	iNumRoutes /= 100;37453746	return iNumRoutes;3747}

Calls

Called by