Hooks
static bool BeforeCvGameDeals_LogDealFailed(CvGameDeals* self, CvDeal* pDeal, bool bNoRenew, bool bNotAccepted, bool bNotValid);static void AfterCvGameDeals_LogDealFailed(CvGameDeals* self, CvDeal* pDeal, bool bNoRenew, bool bNotAccepted, bool bNotValid);static void ReplaceCvGameDeals_LogDealFailed(void (*original)(CvGameDeals*, CvDeal*, bool, bool, bool), CvGameDeals* self, CvDeal* pDeal, bool bNoRenew, bool bNotAccepted, bool bNotValid);CivRegisterBefore<CivHooks::CvGameDeals_LogDealFailed>(host, &BeforeCvGameDeals_LogDealFailed);CivRegisterAfter<CivHooks::CvGameDeals_LogDealFailed>(host, &AfterCvGameDeals_LogDealFailed);CivRegisterReplace<CivHooks::CvGameDeals_LogDealFailed>(host, &ReplaceCvGameDeals_LogDealFailed);
Code
3797#if defined(MOD_AI_MP_DIPLOMACY)3798void CvGameDeals::LogDealFailed(CvDeal* pDeal, bool bNoRenew, bool bNotAccepted, bool bNotValid)3799{3800 if(GC.getLogging() && GC.getAILogging())3801 {3802 CvString strLogName;38033804 CvString strOutBuf;3805 CvString strBaseString;38063807 CvString playerName = GET_PLAYER(pDeal->GetFromPlayer()).getCivilizationShortDescription();3808 CvString otherPlayerName;38093810 CvString strTemp;38113812 // Open the log file3813 if(GC.getPlayerAndCityAILogSplit())3814 {3815 strLogName = "DiplomacyAI_Messages_Log_" + playerName + ".csv";3816 }3817 else3818 {3819 strLogName = "DiplomacyAI_Messages_Log.csv";3820 }38213822 FILogFile* pLog;3823 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);38243825 PlayerTypes eFromPlayer;3826 PlayerTypes eToPlayer;38273828 // Turn number3829 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());38303831 if(bNoRenew)3832 {3833 strOutBuf = strBaseString + "FAILED: NOT RENEWED, ";3834 }3835 if(bNotAccepted)3836 {3837 strOutBuf = strBaseString + "CANCELED: NOT ACCEPTED, ";3838 }3839 if(bNotValid)3840 {3841 strOutBuf = strBaseString + "FAILED: NOT A VALID DEAL, ";3842 }3843 if(pDeal == NULL)3844 {3845 strOutBuf = strBaseString + "FAILED: NO DEAL FOUND";3846 pLog->Msg(strOutBuf);3847 return;3848 }3849 else if (!(bNoRenew || bNotAccepted || bNotValid))3850 {3851 strOutBuf = strBaseString + "FAILED: UNKNOWN, ";3852 }38533854 TradedItemList::iterator itemIter;3855 for(itemIter = pDeal->m_TradedItems.begin(); itemIter != pDeal->m_TradedItems.end(); ++itemIter)3856 {3857 38583859 eFromPlayer = itemIter->m_eFromPlayer;3860 eToPlayer = eFromPlayer == pDeal->m_eFromPlayer ? pDeal->m_eToPlayer : pDeal->m_eFromPlayer;38613862 playerName = GET_PLAYER(eFromPlayer).getCivilizationShortDescription();38633864 // Our Name3865 strBaseString += playerName;38663867 // Their Name3868 otherPlayerName = GET_PLAYER(eToPlayer).getCivilizationShortDescription();3869 strBaseString += ", " + otherPlayerName;38703871 // Peace Treaty deal?3872 if(pDeal->GetPeaceTreatyType() != NO_PEACE_TREATY_TYPE)3873 {3874 switch(pDeal->GetPeaceTreatyType())3875 {3876 case PEACE_TREATY_WHITE_PEACE:3877 strTemp.Format("***** WHITE PEACE *****");3878 break;3879 case PEACE_TREATY_ARMISTICE:3880 strTemp.Format("***** ARMISTICE *****");3881 break;3882 case PEACE_TREATY_SETTLEMENT:3883 strTemp.Format("***** SETTLEMENT *****");3884 break;3885 case PEACE_TREATY_BACKDOWN:3886 strTemp.Format("***** BACKDOWN *****");3887 break;3888 case PEACE_TREATY_SUBMISSION:3889 strTemp.Format("***** SUBMISSION *****");3890 break;3891 case PEACE_TREATY_SURRENDER:3892 strTemp.Format("***** SURRENDER *****");3893 break;3894 case PEACE_TREATY_CESSION:3895 strTemp.Format("***** CESSION *****");3896 break;3897 case PEACE_TREATY_CAPITULATION:3898 strTemp.Format("***** CAPITULATION *****");3899 break;3900 case PEACE_TREATY_UNCONDITIONAL_SURRENDER:3901 strTemp.Format("***** UNCONDITIONAL SURRENDER *****");3902 break;3903 default:3904 strTemp.Format("XXX NO VALID PEACE TREATY!!!");3905 break;3906 }3907 strOutBuf += ", " + strTemp;3908 }39093910 // Is someone surrendering?3911 if(pDeal->GetSurrenderingPlayer() != NO_PLAYER)3912 {3913 playerName = GET_PLAYER(pDeal->GetSurrenderingPlayer()).getCivilizationShortDescription();3914 int iWarScore = GET_PLAYER(eFromPlayer).GetDiplomacyAI()->GetWarScore(eToPlayer);3915 CvString strWarscore;3916 strWarscore.Format("%d", iWarScore);3917 strOutBuf += ", " + playerName + " is giving up" + " at a Warscore of: " + strWarscore;3918 }3919 // White Peace3920 else if(pDeal->GetPeaceTreatyType() == PEACE_TREATY_WHITE_PEACE)3921 {3922 strOutBuf += ", White Peace!";3923 }39243925 // Is this a demand?3926 if(pDeal->GetDemandingPlayer() != NO_PLAYER)3927 {3928 playerName = GET_PLAYER(pDeal->GetDemandingPlayer()).getCivilizationShortDescription();3929 strOutBuf += ", " + playerName + " has made a demand!";3930 }39313932 // Is this a request?3933 if(pDeal->GetRequestingPlayer() != NO_PLAYER)3934 {3935 playerName = GET_PLAYER(pDeal->GetRequestingPlayer()).getCivilizationShortDescription();3936 strOutBuf += ", " + playerName + " has made a request!";3937 }39383939 // What is this particular Trade item?3940 switch(itemIter->m_eItemType)3941 {3942 case TRADE_ITEM_GOLD:3943 strTemp.Format("***** Gold Trade: %d *****", itemIter->m_iData1);3944 break;3945 case TRADE_ITEM_GOLD_PER_TURN:3946 strTemp.Format("***** GPT Trade: %d *****", itemIter->m_iData1);3947 break;3948 case TRADE_ITEM_RESOURCES:3949 strTemp.Format("***** Resource Trade: ID %d *****", itemIter->m_iData1);3950 break;3951 case TRADE_ITEM_CITIES:3952 {3953 CvPlot* pPlot = GC.getMap().plot(itemIter->m_iData1, itemIter->m_iData2);3954 CvCity* pCity = 0;3955 if (pPlot)3956 pCity = pPlot->getPlotCity();3957 strTemp.Format("***** City Trade: ID %s *****", pCity ? pCity->getName().c_str() : "unknown" );3958 break;3959 }3960 case TRADE_ITEM_OPEN_BORDERS:3961 strTemp.Format("Open Borders Trade");3962 break;3963 case TRADE_ITEM_DEFENSIVE_PACT:3964 strTemp.Format("***** Defensive Pact Trade *****");3965 break;3966 case TRADE_ITEM_RESEARCH_AGREEMENT:3967 strTemp.Format("Research Agreement Trade");3968 break;3969 case TRADE_ITEM_PEACE_TREATY:3970 strTemp.Format("***** Peace Treaty Trade *****");3971 break;3972 case TRADE_ITEM_THIRD_PARTY_PEACE:3973 strTemp.Format("***** Third Party Peace Trade *****");3974 break;3975 case TRADE_ITEM_THIRD_PARTY_WAR:3976 strTemp.Format("***** Third Party War Trade *****");3977 break;3978 case TRADE_ITEM_VOTE_COMMITMENT:3979 strTemp.Format("***** Vote Commitment: ID %d, Choice %d *****", itemIter->m_iData1, itemIter->m_iData2);3980 break;3981 default:3982 strTemp.Format("***** UNKNOWN TRADE!!! *****");3983 break;3984 }3985 strOutBuf += ", " + strTemp;39863987 pLog->Msg(strOutBuf);3988 }3989 }3990}