Hooks
static bool BeforeCvGameTrade_CreateVis(CvGameTrade* self, int iIndex);static void AfterCvGameTrade_CreateVis(CvGameTrade* self, int iIndex);static void ReplaceCvGameTrade_CreateVis(void (*original)(CvGameTrade*, int), CvGameTrade* self, int iIndex);CivRegisterBefore<CivHooks::CvGameTrade_CreateVis>(host, &BeforeCvGameTrade_CreateVis);CivRegisterAfter<CivHooks::CvGameTrade_CreateVis>(host, &AfterCvGameTrade_CreateVis);CivRegisterReplace<CivHooks::CvGameTrade_CreateVis>(host, &ReplaceCvGameTrade_CreateVis);
Code
1549void CvGameTrade::CreateVis(int iIndex)1550{1551 CvAssertMsg(iIndex >= 0 && iIndex < (int)m_aTradeConnections.size(), "iIndex out of bounds");1552 if (iIndex < 0 || iIndex >= (int)m_aTradeConnections.size())1553 {1554 return;1555 }15561557 TradeConnection& kTradeConnection = m_aTradeConnections[iIndex];15581559 if (kTradeConnection.m_unitID == -1)1560 {1561#if defined(MOD_BUGFIX_UNITCLASS_NOT_UNIT)1562 CvPlayer& kPlayer = GET_PLAYER(kTradeConnection.m_eOriginOwner);1563 UnitTypes eUnitType = CvPlayerTrade::GetTradeUnit(kTradeConnection.m_eDomain, &kPlayer);1564#else1565 UnitTypes eUnitType = CvPlayerTrade::GetTradeUnit(kTradeConnection.m_eDomain);1566#endif1567 if (eUnitType != NO_UNIT)1568 {1569#if !defined(MOD_BUGFIX_UNITCLASS_NOT_UNIT)1570 CvPlayer& kPlayer = GET_PLAYER(kTradeConnection.m_eOriginOwner);1571#endif1572 CvUnit* pkUnit = kPlayer.initUnit(eUnitType, kTradeConnection.m_aPlotList[kTradeConnection.m_iTradeUnitLocationIndex].m_iX, kTradeConnection.m_aPlotList[kTradeConnection.m_iTradeUnitLocationIndex].m_iY, NO_UNITAI, NO_DIRECTION, false, true, TRADE_UNIT_MAP_LAYER);1573 if (pkUnit)1574 {1575 pkUnit->SetAutomateType(AUTOMATE_TRADE);1576 kTradeConnection.m_unitID = pkUnit->GetID();1577 }1578 }1579 }1580}