Hooks
static bool BeforeCvTeam_makeHasMet(CvTeam* self, TeamTypes eIndex, bool bSuppressMessages);static void AfterCvTeam_makeHasMet(CvTeam* self, TeamTypes eIndex, bool bSuppressMessages);static void ReplaceCvTeam_makeHasMet(void (*original)(CvTeam*, TeamTypes, bool), CvTeam* self, TeamTypes eIndex, bool bSuppressMessages);CivRegisterBefore<CivHooks::CvTeam_makeHasMet>(host, &BeforeCvTeam_makeHasMet);CivRegisterAfter<CivHooks::CvTeam_makeHasMet>(host, &AfterCvTeam_makeHasMet);CivRegisterReplace<CivHooks::CvTeam_makeHasMet>(host, &ReplaceCvTeam_makeHasMet);
Code
3642void CvTeam::makeHasMet(TeamTypes eIndex, bool bSuppressMessages)3643{3644 int iI;36453646 CvAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");3647 CvAssertMsg(eIndex < MAX_TEAMS, "eIndex is expected to be within maximum bounds (invalid Index)");36483649 if(!isHasMet(eIndex))3650 {3651 m_abHasMet[eIndex] = true;36523653 SetTurnTeamMet(eIndex, GC.getGame().getGameTurn());36543655 updateTechShare();36563657 if(GC.getGame().isOption(GAMEOPTION_ALWAYS_WAR))3658 {3659 if(isHuman())3660 {3661 if(GetID() != eIndex)3662 {3663#if defined(MOD_EVENTS_WAR_AND_PEACE)3664 declareWar(eIndex, false, getLeaderID());3665#else3666 declareWar(eIndex);3667#endif3668 }3669 }3670 }36713672 int iMyPlayersLoop;3673 PlayerTypes eMyPlayer;36743675 int iTheirPlayersLoop;3676 PlayerTypes eTheirPlayer;36773678 int iThirdPlayersLoop;3679 PlayerTypes eThirdPlayer;36803681 // First Contact in Diplo AI (Civ 5)3682 for(iMyPlayersLoop = 0; iMyPlayersLoop < MAX_CIV_PLAYERS; iMyPlayersLoop++)3683 {3684 eMyPlayer = (PlayerTypes) iMyPlayersLoop;36853686 if(GET_PLAYER(eMyPlayer).isAlive())3687 {3688 if(GET_PLAYER(eMyPlayer).getTeam() == GetID())3689 {3690 // Now loop through players on Their team3691 for(iTheirPlayersLoop = 0; iTheirPlayersLoop < MAX_CIV_PLAYERS; iTheirPlayersLoop++)3692 {3693 eTheirPlayer = (PlayerTypes) iTheirPlayersLoop;36943695 // Don't calculate proximity to oneself!3696 if(eMyPlayer != eTheirPlayer)3697 {3698 if(GET_PLAYER(eTheirPlayer).isAlive())3699 {3700 if(GET_PLAYER(eTheirPlayer).getTeam() == eIndex)3701 {3702 // Begin contact stuff here37033704 // Update Proximity between players3705 GET_PLAYER(eMyPlayer).DoUpdateProximityToPlayer(eTheirPlayer);3706 GET_PLAYER(eTheirPlayer).DoUpdateProximityToPlayer(eMyPlayer);37073708 // First contact Diplo changes (no Minors)3709 if(!isMinorCiv())3710 {3711 GET_PLAYER(eMyPlayer).GetDiplomacyAI()->DoFirstContact(eTheirPlayer);3712 }37133714 // THIRD party loop - let everyone else know that someone met someone!3715 for(iThirdPlayersLoop = 0; iThirdPlayersLoop < MAX_CIV_PLAYERS; iThirdPlayersLoop++)3716 {3717 eThirdPlayer = (PlayerTypes) iThirdPlayersLoop;37183719 if(GET_PLAYER(eThirdPlayer).isAlive())3720 {3721 // Don't notify diplo AI if we're the one meeting or the one being met3722 if(eThirdPlayer != eMyPlayer && eThirdPlayer != eTheirPlayer)3723 {3724 GET_PLAYER(eThirdPlayer).GetDiplomacyAI()->DoPlayerMetSomeone(eMyPlayer, eTheirPlayer);3725 }3726 }3727 }3728 }3729 }3730 }3731 }3732 }3733 }3734 }37353736 if(GET_TEAM(eIndex).isHuman())3737 {3738 for(iI = 0; iI < MAX_PLAYERS; iI++)3739 {3740 if(GET_PLAYER((PlayerTypes)iI).isAlive())3741 {3742 if(GET_PLAYER((PlayerTypes)iI).getTeam() == GetID())3743 {3744 if(!(GET_PLAYER((PlayerTypes)iI).isHuman()))3745 {3746 GET_PLAYER((PlayerTypes)iI).clearResearchQueue();3747 //GET_PLAYER((PlayerTypes)iI).AI_makeProductionDirty();3748 }3749 }3750 }3751 }3752 }37533754 if((GetID() == GC.getGame().getActiveTeam()) || (eIndex == GC.getGame().getActiveTeam()))3755 {3756 DLLUI->setDirty(Score_DIRTY_BIT, true);3757 }37583759 if(GET_TEAM(eIndex).isMinorCiv())3760 {3761 int iCapitalX = -1;3762 int iCapitalY = -1;3763 int iCapitalID = -1;37643765 // Minor reveals his capital to the player so that he can click on the City to contact3766 CvCity* pCap = GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).getCapitalCity();3767 if(pCap)3768 {3769 iCapitalX = pCap->getX();3770 iCapitalY = pCap->getY();3771 iCapitalID = pCap->GetID();3772 CvPlot* pCapPlot = pCap->plot();3773 if(pCapPlot)3774 {3775 pCapPlot->setRevealed(GetID(), true);3776 GC.getMap().updateDeferredFog();3777 }3778 }37793780 // First contact with major stuff3781 if(!isMinorCiv())3782 {3783 GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).GetMinorCivAI()->DoFirstContactWithMajor(GetID(), /*bSuppressMessages*/ isAtWar(eIndex));3784 }37853786 if(!isAtWar(eIndex))3787 {3788 // Notify the Team that they met someone3789 if(!bSuppressMessages)3790 {3791 CvString strBuffer = GetLocalizedText("TXT_KEY_NOTIFICATION_MET_MINOR_CIV", GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).getNameKey());3792 CvString strSummary = GetLocalizedText("TXT_KEY_NOTIFICATION_SUMMARY_MET_MINOR_CIV", GET_PLAYER(GET_TEAM(eIndex).getLeaderID()).getNameKey());37933794 AddNotification(NOTIFICATION_MET_MINOR, strBuffer, strSummary, iCapitalX, iCapitalY, iCapitalID);3795 }3796 }3797 }37983799 // Report event3800 gDLL->GameplayMetTeam(GetID(), eIndex);3801 }3802}