CvGameDeals::DoCancelDealsBetweenPlayers(PlayerTypes, PlayerTypes)
- Defined in
- CvDealClasses.cpp, line 3104
- Class
- CvGameDeals
- Hook name
CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers
Hooks
static bool BeforeCvGameDeals_DoCancelDealsBetweenPlayers(CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer);static void AfterCvGameDeals_DoCancelDealsBetweenPlayers(CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer);static void ReplaceCvGameDeals_DoCancelDealsBetweenPlayers(void (*original)(CvGameDeals*, PlayerTypes, PlayerTypes), CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer);CivRegisterBefore<CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers>(host, &BeforeCvGameDeals_DoCancelDealsBetweenPlayers);CivRegisterAfter<CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers>(host, &AfterCvGameDeals_DoCancelDealsBetweenPlayers);CivRegisterReplace<CivHooks::CvGameDeals_DoCancelDealsBetweenPlayers>(host, &ReplaceCvGameDeals_DoCancelDealsBetweenPlayers);
Code
3103/// Deals between these two Players were interrupted (death)3104void CvGameDeals::DoCancelDealsBetweenPlayers(PlayerTypes eFromPlayer, PlayerTypes eToPlayer)3105{3106 DealList::iterator it;3107 DealList tempDeals;31083109 if(m_CurrentDeals.size() > 0)3110 {3111 bool bSomethingChanged = false;31123113 // Copy the deals into a temporary container3114 for(it = m_CurrentDeals.begin(); it != m_CurrentDeals.end(); ++it)3115 {3116 tempDeals.push_back(*it);3117 }31183119 m_CurrentDeals.clear();3120 for(it = tempDeals.begin(); it != tempDeals.end(); ++it)3121 {3122 // Players on this deal match?3123 if(it->m_eFromPlayer == eFromPlayer && it->m_eToPlayer == eToPlayer ||3124 it->m_eFromPlayer == eToPlayer && it->m_eToPlayer == eFromPlayer)3125 {3126 // Change final turn3127 it->m_iFinalTurn = GC.getGame().getGameTurn();31283129 // Cancel individual items3130 TradedItemList::iterator itemIter;3131 for(itemIter = it->m_TradedItems.begin(); itemIter != it->m_TradedItems.end(); ++itemIter)3132 {3133 bSomethingChanged = true;31343135 itemIter->m_iFinalTurn = GC.getGame().getGameTurn();31363137 eFromPlayer = itemIter->m_eFromPlayer;3138 eToPlayer = it->GetOtherPlayer(eFromPlayer);31393140 DoEndTradedItem(&*itemIter, eToPlayer, true);3141 }3142 m_HistoricalDeals.push_back(*it);3143 }3144 else3145 {3146 m_CurrentDeals.push_back(*it);3147 }3148 }31493150 if(bSomethingChanged)3151 {3152 // Update UI if we were involved in the deal3153 PlayerTypes eActivePlayer = GC.getGame().getActivePlayer();3154 if(eFromPlayer == eActivePlayer || eToPlayer == eActivePlayer)3155 {3156 GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);3157 }3158 }3159 }3160}
Calls
BaseVector::beginBaseVector::clearBaseVector::endBaseVector::size- CvDeal::GetOtherPlayer(PlayerTypes) const
- CvGame::getActivePlayer() const
- CvGame::getGameTurn()
- CvGameDeals::DoEndTradedItem(CvTradedItem *, PlayerTypes, bool)
- CvGlobals::GetEngineUserInterface()
- CvGlobals::getGame()
FCustomList_Core::base_iterator::operator++FFastList::iterator::iteratorFFastList::iterator::operator*FFastList::iterator::operator->FStaticVector::FStaticVectorFStaticVector::push_backICvUserInterface1::setDirty