Hooks
static bool BeforeCvGameDeals_LogDealComplete(CvGameDeals* self, CvDeal* pDeal);static void AfterCvGameDeals_LogDealComplete(CvGameDeals* self, CvDeal* pDeal);static void ReplaceCvGameDeals_LogDealComplete(void (*original)(CvGameDeals*, CvDeal*), CvGameDeals* self, CvDeal* pDeal);CivRegisterBefore<CivHooks::CvGameDeals_LogDealComplete>(host, &BeforeCvGameDeals_LogDealComplete);CivRegisterAfter<CivHooks::CvGameDeals_LogDealComplete>(host, &AfterCvGameDeals_LogDealComplete);CivRegisterReplace<CivHooks::CvGameDeals_LogDealComplete>(host, &ReplaceCvGameDeals_LogDealComplete);
Code
3605void CvGameDeals::LogDealComplete(CvDeal* pDeal)3606{3607 if(GC.getLogging() && GC.getAILogging())3608 {3609 CvString strLogName;36103611 CvString strOutBuf;3612 CvString strBaseString;36133614#if defined(MOD_AI_MP_DIPLOMACY)3615 CvString playerName = GET_PLAYER(pDeal->GetFromPlayer()).getCivilizationShortDescription();3616#else3617 CvString playerName;3618#endif3619 CvString otherPlayerName;36203621 CvString strTemp;36223623 // Open the log file3624 if(GC.getPlayerAndCityAILogSplit())3625 {3626 strLogName = "DiplomacyAI_Messages_Log_" + playerName + ".csv";3627 }3628 else3629 {3630 strLogName = "DiplomacyAI_Messages_Log.csv";3631 }36323633 FILogFile* pLog;3634 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);36353636 PlayerTypes eFromPlayer;3637 PlayerTypes eToPlayer;36383639 TradedItemList::iterator itemIter;3640 for(itemIter = pDeal->m_TradedItems.begin(); itemIter != pDeal->m_TradedItems.end(); ++itemIter)3641 {3642 // Turn number3643 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());36443645 eFromPlayer = itemIter->m_eFromPlayer;3646 eToPlayer = eFromPlayer == pDeal->m_eFromPlayer ? pDeal->m_eToPlayer : pDeal->m_eFromPlayer;36473648 playerName = GET_PLAYER(eFromPlayer).getCivilizationShortDescription();36493650 // Our Name3651 strBaseString += playerName;36523653 // Their Name3654 otherPlayerName = GET_PLAYER(eToPlayer).getCivilizationShortDescription();3655 strBaseString += ", " + otherPlayerName;36563657 strOutBuf = strBaseString + ", , ";36583659 // Peace Treaty deal?3660 if(pDeal->GetPeaceTreatyType() != NO_PEACE_TREATY_TYPE)3661 {3662 switch(pDeal->GetPeaceTreatyType())3663 {3664 case PEACE_TREATY_WHITE_PEACE:3665 strTemp.Format("***** WHITE PEACE *****");3666 break;3667 case PEACE_TREATY_ARMISTICE:3668 strTemp.Format("***** ARMISTICE *****");3669 break;3670 case PEACE_TREATY_SETTLEMENT:3671 strTemp.Format("***** SETTLEMENT *****");3672 break;3673 case PEACE_TREATY_BACKDOWN:3674 strTemp.Format("***** BACKDOWN *****");3675 break;3676 case PEACE_TREATY_SUBMISSION:3677 strTemp.Format("***** SUBMISSION *****");3678 break;3679 case PEACE_TREATY_SURRENDER:3680 strTemp.Format("***** SURRENDER *****");3681 break;3682 case PEACE_TREATY_CESSION:3683 strTemp.Format("***** CESSION *****");3684 break;3685 case PEACE_TREATY_CAPITULATION:3686 strTemp.Format("***** CAPITULATION *****");3687 break;3688 case PEACE_TREATY_UNCONDITIONAL_SURRENDER:3689 strTemp.Format("***** UNCONDITIONAL SURRENDER *****");3690 break;3691 default:3692 strTemp.Format("XXX NO VALID PEACE TREATY!!!");3693 break;3694 }3695 strOutBuf += ", " + strTemp;3696 }36973698 // Is someone surrendering?3699 if(pDeal->GetSurrenderingPlayer() != NO_PLAYER)3700 {3701 playerName = GET_PLAYER(pDeal->GetSurrenderingPlayer()).getCivilizationShortDescription();3702#if defined(MOD_AI_MP_DIPLOMACY)3703 if (MOD_AI_MP_DIPLOMACY) {3704 int iWarScore = GET_PLAYER(eFromPlayer).GetDiplomacyAI()->GetWarScore(eToPlayer);3705 CvString strWarscore;3706 strWarscore.Format("%d", iWarScore);3707 strOutBuf += ", " + playerName + " is giving up" + " at a Warscore of: " + strWarscore;3708 } else3709#endif3710 strOutBuf += ", " + playerName + " is giving up!";3711 }3712 // White Peace3713 else if(pDeal->GetPeaceTreatyType() == PEACE_TREATY_WHITE_PEACE)3714 {3715 strOutBuf += ", White Peace!";3716 }37173718 // Is this a demand?3719 if(pDeal->GetDemandingPlayer() != NO_PLAYER)3720 {3721 playerName = GET_PLAYER(pDeal->GetDemandingPlayer()).getCivilizationShortDescription();3722 strOutBuf += ", " + playerName + " has made a demand!";3723 }37243725 // Is this a request?3726 if(pDeal->GetRequestingPlayer() != NO_PLAYER)3727 {3728 playerName = GET_PLAYER(pDeal->GetRequestingPlayer()).getCivilizationShortDescription();3729 strOutBuf += ", " + playerName + " has made a request!";3730 }37313732 // What is this particular Trade item?3733 switch(itemIter->m_eItemType)3734 {3735 case TRADE_ITEM_GOLD:3736 strTemp.Format("***** Gold Trade: %d *****", itemIter->m_iData1);3737 break;3738 case TRADE_ITEM_GOLD_PER_TURN:3739 strTemp.Format("***** GPT Trade: %d *****", itemIter->m_iData1);3740 break;3741 case TRADE_ITEM_RESOURCES:3742 strTemp.Format("***** Resource Trade: ID %d *****", itemIter->m_iData1);3743 break;3744 case TRADE_ITEM_CITIES:3745#if defined(MOD_AI_MP_DIPLOMACY)3746 {3747 CvPlot* pPlot = GC.getMap().plot(itemIter->m_iData1, itemIter->m_iData2);3748 CvCity* pCity = 0;3749 if (pPlot)3750 pCity = pPlot->getPlotCity();3751 if (pCity)3752 strTemp.Format("***** City Trade: %s *****", pCity->getName().c_str());3753 else3754 strTemp.Format("***** City Trade: (%d, %d) *****", itemIter->m_iData1, itemIter->m_iData2);3755 break;3756 }3757#else3758 strTemp.Format("***** City Trade: ID %d %d *****", itemIter->m_iData1, itemIter->m_iData2);3759 break;3760#endif3761 case TRADE_ITEM_OPEN_BORDERS:3762 strTemp.Format("Open Borders Trade");3763 break;3764 case TRADE_ITEM_DEFENSIVE_PACT:3765 strTemp.Format("***** Defensive Pact Trade *****");3766 break;3767 case TRADE_ITEM_RESEARCH_AGREEMENT:3768 strTemp.Format("Research Agreement Trade");3769 break;3770 case TRADE_ITEM_PEACE_TREATY:3771 strTemp.Format("***** Peace Treaty Trade *****");3772 break;3773 case TRADE_ITEM_THIRD_PARTY_PEACE:3774 strTemp.Format("***** Third Party Peace Trade *****");3775 break;3776 case TRADE_ITEM_THIRD_PARTY_WAR:3777 strTemp.Format("***** Third Party War Trade *****");3778 break;3779 case TRADE_ITEM_VOTE_COMMITMENT:3780 strTemp.Format("***** Vote Commitment: ID %d, Choice %d *****", itemIter->m_iData1, itemIter->m_iData2);3781 break;3782 default:3783 strTemp.Format("***** UNKNOWN TRADE!!! *****");3784 break;3785 }3786 strOutBuf += ", " + strTemp;37873788 pLog->Msg(strOutBuf);37893790 OutputDebugString("\n");3791 OutputDebugString(strOutBuf);3792 OutputDebugString("\n");3793 }3794 }3795}