Hooks
static bool BeforeCvDiplomacyAI_ChangeNumCiviliansReturnedToMe(CvDiplomacyAI* self, PlayerTypes ePlayer, int iChange);static void AfterCvDiplomacyAI_ChangeNumCiviliansReturnedToMe(CvDiplomacyAI* self, PlayerTypes ePlayer, int iChange);static void ReplaceCvDiplomacyAI_ChangeNumCiviliansReturnedToMe(void (*original)(CvDiplomacyAI*, PlayerTypes, int), CvDiplomacyAI* self, PlayerTypes ePlayer, int iChange);CivRegisterBefore<CivHooks::CvDiplomacyAI_ChangeNumCiviliansReturnedToMe>(host, &BeforeCvDiplomacyAI_ChangeNumCiviliansReturnedToMe);CivRegisterAfter<CivHooks::CvDiplomacyAI_ChangeNumCiviliansReturnedToMe>(host, &AfterCvDiplomacyAI_ChangeNumCiviliansReturnedToMe);CivRegisterReplace<CivHooks::CvDiplomacyAI_ChangeNumCiviliansReturnedToMe>(host, &ReplaceCvDiplomacyAI_ChangeNumCiviliansReturnedToMe);
Code
23028/// Returned civilians?23029void CvDiplomacyAI::ChangeNumCiviliansReturnedToMe(PlayerTypes ePlayer, int iChange)23030{23031 if(iChange != 0)23032 {23033 CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");23034 CvAssertMsg(ePlayer < MAX_MAJOR_CIVS, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");2303523036 m_paiNumCiviliansReturnedToMe[ePlayer] += iChange;23037 CvAssertMsg(m_paiNumCiviliansReturnedToMe[ePlayer] >= 0, "DIPLOMACY_AI: Invalid # of Civilians returned. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");2303823039 // Message for human23040 if(iChange > 0)23041 {23042#if defined(MOD_AI_MP_DIPLOMACY)23043 if (MOD_AI_MP_DIPLOMACY) {23044 // TODO: what about GC.GetEngineUserInterface()->SetForceDiscussionModeQuitOnBack(true)?23045#if defined(MOD_DIPLOMACY_STFU)23046 SendAILeaderMessage(GetPlayer()->GetID(), ePlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_RETURNED_CIVILIAN, LEADERHEAD_ANIM_POSITIVE, -1);23047#else23048 const char* strText = GetDiploStringForMessage(DIPLO_MESSAGE_RETURNED_CIVILIAN);23049#if defined(MOD_API_PLAYER_LOGS)23050 CvDiplomacyRequests::SendRequest(GetPlayer()->GetID(), ePlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_RETURNED_CIVILIAN, strText, LEADERHEAD_ANIM_POSITIVE, -1);23051#else23052 CvDiplomacyRequests::SendRequest(GetPlayer()->GetID(), ePlayer, DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE, -1);23053#endif23054#endif23055 } else {23056#endif23057 if(!GC.getGame().isNetworkMultiPlayer()) // KWG: Candidate for !GC.getGame().IsOption(GAMEOPTION_SIMULTANEOUS_TURNS)23058 {23059 if(GC.getGame().getActivePlayer() == ePlayer)23060 {23061 GC.GetEngineUserInterface()->SetForceDiscussionModeQuitOnBack(true); // Set force quit so that when discuss mode pops up the Back button won't go to leader root23062#if defined(MOD_DIPLOMACY_STFU)23063 GET_PLAYER(ePlayer).GetDiplomacyAI()->DisplayAILeaderMessage(GetPlayer()->GetID(), DIPLO_UI_STATE_BLANK_DISCUSSION, DIPLO_MESSAGE_RETURNED_CIVILIAN, LEADERHEAD_ANIM_POSITIVE);23064#else23065 const char* strText = GetDiploStringForMessage(DIPLO_MESSAGE_RETURNED_CIVILIAN);23066 gDLL->GameplayDiplomacyAILeaderMessage(GetPlayer()->GetID(), DIPLO_UI_STATE_BLANK_DISCUSSION, strText, LEADERHEAD_ANIM_POSITIVE);23067#endif23068 }23069 }23070#if defined(MOD_AI_MP_DIPLOMACY)23071 }23072#endif23073 }23074 }23075}