Hooks
static bool BeforeCvGameDeals_FinalizeDealNotify(CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvWeightedVector<TeamTypes, MAX_CIV_TEAMS, true>& veNowAtPeacePairs);static void AfterCvGameDeals_FinalizeDealNotify(CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvWeightedVector<TeamTypes, MAX_CIV_TEAMS, true>& veNowAtPeacePairs);static void ReplaceCvGameDeals_FinalizeDealNotify(void (*original)(CvGameDeals*, PlayerTypes, PlayerTypes, CvWeightedVector<TeamTypes, MAX_CIV_TEAMS, true>&), CvGameDeals* self, PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvWeightedVector<TeamTypes, MAX_CIV_TEAMS, true>& veNowAtPeacePairs);CivRegisterBefore<CivHooks::CvGameDeals_FinalizeDealNotify>(host, &BeforeCvGameDeals_FinalizeDealNotify);CivRegisterAfter<CivHooks::CvGameDeals_FinalizeDealNotify>(host, &AfterCvGameDeals_FinalizeDealNotify);CivRegisterReplace<CivHooks::CvGameDeals_FinalizeDealNotify>(host, &ReplaceCvGameDeals_FinalizeDealNotify);
Code
2417void CvGameDeals::FinalizeDealNotify(PlayerTypes eFromPlayer, PlayerTypes eToPlayer, CvWeightedVector<TeamTypes, MAX_CIV_TEAMS, true>& veNowAtPeacePairs)2418{2419 // Update UI if we were involved in the deal2420 PlayerTypes eActivePlayer = GC.getGame().getActivePlayer();2421 if(eFromPlayer == eActivePlayer || eToPlayer == eActivePlayer)2422 {2423 GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);2424 }24252426 // Send out a condensed notification if peace was made with third party minor civs in this deal2427 if(veNowAtPeacePairs.size() > 0)2428 {2429 // Loop through all teams2430 for(int iFromTeamIndex = 0; iFromTeamIndex < MAX_CIV_TEAMS; iFromTeamIndex++)2431 {2432 TeamTypes eFromTeam = (TeamTypes) iFromTeamIndex;2433 TeamTypes eToTeam = NO_TEAM;2434 bool bFromTeamMadePeace = false;24352436 Localization::String strTemp = Localization::Lookup("TXT_KEY_MISC_MADE_PEACE_WITH_MINOR_ALLIES");2437 Localization::String strSummary = Localization::Lookup("TXT_KEY_MISC_MADE_PEACE_WITH_MINOR_ALLIES_SUMMARY");2438 strTemp << GET_TEAM(eFromTeam).getName().GetCString();2439 strSummary << GET_TEAM(eFromTeam).getName().GetCString();2440 CvString strMessage = strTemp.toUTF8();24412442 // Did this team make peace with someone in this deal?2443 for(int iPairIndex = 0; iPairIndex < veNowAtPeacePairs.size(); iPairIndex++)2444 {2445 if(veNowAtPeacePairs.GetWeight(iPairIndex) == (int) eFromTeam)2446 {2447 eToTeam = veNowAtPeacePairs.GetElement(iPairIndex);2448 strTemp = Localization::Lookup(GET_TEAM(eToTeam).getName().GetCString());2449 strMessage = strMessage + "[NEWLINE]" + strTemp.toUTF8();2450 bFromTeamMadePeace = true;2451 }2452 }24532454 // Send out notifications if there was a change2455 if(bFromTeamMadePeace)2456 {2457 // Send out the notifications to other players2458 for(int iNotifPlayerLoop = 0; iNotifPlayerLoop < MAX_MAJOR_CIVS; iNotifPlayerLoop++)2459 {2460 PlayerTypes eNotifPlayer = (PlayerTypes) iNotifPlayerLoop;24612462 if(!GET_PLAYER(eNotifPlayer).isAlive())2463 continue;24642465 if(GET_PLAYER(eNotifPlayer).getTeam() == eFromTeam)2466 continue;24672468 if(GET_TEAM(GET_PLAYER(eNotifPlayer).getTeam()).isHasMet(eFromTeam)) //antonjs: consider: what if eNotifPlayer hasn't met one or more of the minors that eFromTeam made peace with?2469 {2470 if(GET_PLAYER(eNotifPlayer).GetNotifications())2471 {2472 GET_PLAYER(eNotifPlayer).GetNotifications()->Add(NOTIFICATION_PEACE, strMessage, strSummary.toUTF8(), -1, -1, GET_TEAM(eFromTeam).getLeaderID(), eToTeam);2473 }2474 }2475 }2476 }2477 }2478 }2479}