Hooks
static bool BeforeCvDiplomacyAI_LogMajorCivApproachUpdate(CvDiplomacyAI* self, PlayerTypes ePlayer, const int* aiApproachValues, MajorCivApproachTypes eNewMajorCivApproach, MajorCivApproachTypes eOldApproach, WarFaceTypes eNewWarFace);static void AfterCvDiplomacyAI_LogMajorCivApproachUpdate(CvDiplomacyAI* self, PlayerTypes ePlayer, const int* aiApproachValues, MajorCivApproachTypes eNewMajorCivApproach, MajorCivApproachTypes eOldApproach, WarFaceTypes eNewWarFace);static void ReplaceCvDiplomacyAI_LogMajorCivApproachUpdate(void (*original)(CvDiplomacyAI*, PlayerTypes, const int*, MajorCivApproachTypes, MajorCivApproachTypes, WarFaceTypes), CvDiplomacyAI* self, PlayerTypes ePlayer, const int* aiApproachValues, MajorCivApproachTypes eNewMajorCivApproach, MajorCivApproachTypes eOldApproach, WarFaceTypes eNewWarFace);CivRegisterBefore<CivHooks::CvDiplomacyAI_LogMajorCivApproachUpdate>(host, &BeforeCvDiplomacyAI_LogMajorCivApproachUpdate);CivRegisterAfter<CivHooks::CvDiplomacyAI_LogMajorCivApproachUpdate>(host, &AfterCvDiplomacyAI_LogMajorCivApproachUpdate);CivRegisterReplace<CivHooks::CvDiplomacyAI_LogMajorCivApproachUpdate>(host, &ReplaceCvDiplomacyAI_LogMajorCivApproachUpdate);
Code
25907/// Log Major Civ Approach Update25908void CvDiplomacyAI::LogMajorCivApproachUpdate(PlayerTypes ePlayer, const int* aiApproachValues, MajorCivApproachTypes eNewMajorCivApproach, MajorCivApproachTypes eOldApproach, WarFaceTypes eNewWarFace)25909{25910 if(GC.getLogging() && GC.getAILogging())25911 {25912 CvString strOutBuf;25913 CvString strBaseString;25914 CvString strTemp;25915 CvString playerName;25916 CvString otherPlayerName;25917 CvString strDesc;25918 CvString strLogName;2591925920 // Find the name of this civ and city25921 playerName = GetPlayer()->getCivilizationShortDescription();2592225923 // Open the log file25924 if(GC.getPlayerAndCityAILogSplit())25925 {25926 strLogName = "DiplomacyAI_Approach_Log_" + playerName + ".csv";25927 }25928 else25929 {25930 strLogName = "DiplomacyAI_Approach_Log.csv";25931 }2593225933 FILogFile* pLog;25934 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);2593525936 // Get the leading info for this line25937 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());25938 strBaseString += playerName;2593925940 otherPlayerName = GET_PLAYER(ePlayer).getCivilizationShortDescription();25941 strBaseString += ", " + otherPlayerName;2594225943 MajorCivApproachTypes eMajorCivApproach;2594425945 // Major Civs25946 if(!GET_PLAYER(ePlayer).isMinorCiv())25947 {25948 LogMajorCivApproach(strOutBuf, eNewMajorCivApproach, eNewWarFace);2594925950 if(eNewMajorCivApproach != eOldApproach)25951 {25952 LogMajorCivApproach(strOutBuf, eOldApproach, eNewWarFace);25953 }25954 else25955 {25956 strTemp.Format("---");25957 strOutBuf += ", " + strTemp;25958 }2595925960 LogOpinion(strOutBuf, ePlayer);2596125962 LogWarmongerThreat(strOutBuf, ePlayer);2596325964 LogMilitaryThreat(strOutBuf, ePlayer);2596525966 LogTargetValue(strOutBuf, ePlayer);2596725968 LogWarGoal(strOutBuf, ePlayer);2596925970 LogMilitaryAggressivePosture(strOutBuf, ePlayer);2597125972 LogProximity(strOutBuf, ePlayer);2597325974 LogLandDispute(strOutBuf, ePlayer);2597525976 LogVictoryDispute(strOutBuf, ePlayer);2597725978 LogWonderDispute(strOutBuf, ePlayer);2597925980 LogMinorCivDispute(strOutBuf, ePlayer);2598125982 strTemp.Format("---");25983 strOutBuf += ", " + strTemp;2598425985 // Weights for each possible Approach25986 for(int iMajorCivApproachLoop = 0; iMajorCivApproachLoop < NUM_MAJOR_CIV_APPROACHES; iMajorCivApproachLoop++)25987 {25988 eMajorCivApproach = (MajorCivApproachTypes) iMajorCivApproachLoop;2598925990 switch(eMajorCivApproach)25991 {25992 case MAJOR_CIV_APPROACH_WAR:25993 strTemp.Format("War");25994 break;25995 case MAJOR_CIV_APPROACH_HOSTILE:25996 strTemp.Format("Hostile");25997 break;25998 case MAJOR_CIV_APPROACH_DECEPTIVE:25999 strTemp.Format("Deceptive");26000 break;26001 case MAJOR_CIV_APPROACH_GUARDED:26002 strTemp.Format("Guarded");26003 break;26004 case MAJOR_CIV_APPROACH_AFRAID:26005 strTemp.Format("Afraid");26006 break;26007 case MAJOR_CIV_APPROACH_FRIENDLY:26008 strTemp.Format("Friendly");26009 break;26010 case MAJOR_CIV_APPROACH_NEUTRAL:26011 strTemp.Format("Neutral");26012 break;26013 default:26014 strTemp.Format("XXX");26015 break;26016 }26017 strOutBuf += ", " + strTemp;2601826019 strTemp.Format("%d", aiApproachValues[eMajorCivApproach] / 100);26020 strOutBuf += ", " + strTemp;26021 }2602226023 strOutBuf = strBaseString + strOutBuf;26024 pLog->Msg(strOutBuf);26025 }26026 }26027}