Hooks
static bool BeforeCvDiplomacyRequests_SendDealRequest(PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvDeal* pkDeal, DiploUIStateTypes eDiploType, DiploMessageTypes eDiploMessage, const char* pszMessage, LeaderheadAnimationTypes eAnimationType);static void AfterCvDiplomacyRequests_SendDealRequest(PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvDeal* pkDeal, DiploUIStateTypes eDiploType, DiploMessageTypes eDiploMessage, const char* pszMessage, LeaderheadAnimationTypes eAnimationType);static void ReplaceCvDiplomacyRequests_SendDealRequest(void (*original)(PlayerTypes, PlayerTypes, CvDeal*, DiploUIStateTypes, DiploMessageTypes, const char*, LeaderheadAnimationTypes), PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvDeal* pkDeal, DiploUIStateTypes eDiploType, DiploMessageTypes eDiploMessage, const char* pszMessage, LeaderheadAnimationTypes eAnimationType);CivRegisterBefore<CivHooks::CvDiplomacyRequests_SendDealRequest>(host, &BeforeCvDiplomacyRequests_SendDealRequest);CivRegisterAfter<CivHooks::CvDiplomacyRequests_SendDealRequest>(host, &AfterCvDiplomacyRequests_SendDealRequest);CivRegisterReplace<CivHooks::CvDiplomacyRequests_SendDealRequest>(host, &ReplaceCvDiplomacyRequests_SendDealRequest);
Code
464// Request for a deal465//static466#if defined(MOD_API_PLAYER_LOGS)467void CvDiplomacyRequests::SendDealRequest(PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvDeal* pkDeal, DiploUIStateTypes eDiploType, DiploMessageTypes eDiploMessage, const char* pszMessage, LeaderheadAnimationTypes eAnimationType)468#else469void CvDiplomacyRequests::SendDealRequest(PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvDeal* pkDeal, DiploUIStateTypes eDiploType, const char* pszMessage, LeaderheadAnimationTypes eAnimationType)470#endif471{472#if defined(MOD_AI_MP_DIPLOMACY)473 if (MOD_AI_MP_DIPLOMACY) {474 CvAssert(eFromPlayer != NO_PLAYER);475 CvAssertMsg(!GET_PLAYER(eFromPlayer).isHuman(), __FUNCTION__ " must not be used by a human player!");476477 if (GC.getGame().isNetworkMultiPlayer() && eToPlayer != GC.getGame().getActivePlayer())478 {479 return;480 }481482 CvPlayer& kTo = GET_PLAYER(eToPlayer);483 CvDiplomacyRequests* pDiploRequests = kTo.GetDiplomacyRequests();484 if (pDiploRequests && pkDeal)485 {486 CvAssert(pkDeal->GetFromPlayer() == eFromPlayer);487 CvAssert(pkDeal->GetToPlayer() == eToPlayer);488 GC.getGame().GetGameDeals()->AddProposedDeal(*pkDeal); // propose the deal (needed for activation...)489#if defined(MOD_API_PLAYER_LOGS)490 pDiploRequests->Add(eFromPlayer, eDiploType, eDiploMessage, pszMessage, eAnimationType, -1);491#else492 pDiploRequests->Add(eFromPlayer, eDiploType, pszMessage, eAnimationType, -1);493#endif494 }495 } else {496#endif497 // Deals must currently happen on the active player's turn...498 if(GC.getGame().getActivePlayer() == eToPlayer)499 {500// CUSTOMLOG("STFU@%i: Deal request from player %i", GC.getGame().getGameTurn(), eFromPlayer);501 auto_ptr<ICvDeal1> pDeal = GC.WrapDealPointer(pkDeal);502 GC.GetEngineUserInterface()->SetScratchDeal(pDeal.get());503#if defined(MOD_API_PLAYER_LOGS)504 SendRequest(eFromPlayer, eToPlayer, eDiploType, eDiploMessage, pszMessage, eAnimationType, -1);505#else506 SendRequest(eFromPlayer, eToPlayer, eDiploType, pszMessage, eAnimationType, -1);507#endif508 }509#if defined(MOD_AI_MP_DIPLOMACY)510 }511#endif512}