Code
26754/// Log our guesses as to what other Players are up to26755void CvDiplomacyAI::LogOtherPlayerGuessStatus()26756{26757 if((int)m_eTargetPlayer >= (int)DIPLO_FIRST_PLAYER)26758 return;2675926760 if(GC.getLogging() && GC.getAILogging())26761 {26762 CvString strOutBuf;26763 CvString strBaseString;26764 CvString playerName;26765 CvString otherPlayerName;26766 CvString thirdPlayerName;26767 CvString strOtherPlayerGrandStrategy;26768 CvString strThirdPlayerGrandStrategy;26769 CvString strDesc;26770 CvString strLogName;26771 CvString strTemp;2677226773 // Find the name of this civ and city26774 playerName = GetPlayer()->getCivilizationShortDescription();2677526776 // Open the log file26777 if(GC.getPlayerAndCityAILogSplit())26778 {26779 strLogName = "DiplomacyAI_Guess_Log_" + playerName + ".csv";26780 }26781 else26782 {26783 strLogName = "DiplomacyAI_Guess_Log.csv";26784 }2678526786 FILogFile* pLog;26787 pLog = LOGFILEMGR.GetLog(strLogName, FILogFile::kDontTimeStamp);2678826789 // Get the leading info for this line26790 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());26791 strBaseString += playerName;2679226793 AIGrandStrategyTypes eGrandStrategy;2679426795 int iPlayerLoop;26796 PlayerTypes eLoopPlayer;26797 int iOtherPlayerLoop;26798 PlayerTypes eLoopOtherPlayer;2679926800 // Loop through all (known) Players26801 for(iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)26802 {26803 eLoopPlayer = (PlayerTypes) iPlayerLoop;2680426805 if(IsPlayerValid(eLoopPlayer))26806 {26807 otherPlayerName = GET_PLAYER(eLoopPlayer).getCivilizationShortDescription();2680826809 eGrandStrategy = GetPlayer()->GetGrandStrategyAI()->GetGuessOtherPlayerActiveGrandStrategy(eLoopPlayer);2681026811 CvAIGrandStrategyXMLEntry* pEntry = (eGrandStrategy != NO_AIGRANDSTRATEGY)? GC.getAIGrandStrategyInfo(eGrandStrategy) : NULL;26812 if(pEntry != NULL)26813 {26814 strTemp.Format("%s", pEntry->GetType());26815 strOtherPlayerGrandStrategy = strTemp;2681626817 // Confidence in our guess26818 switch(GetPlayer()->GetGrandStrategyAI()->GetGuessOtherPlayerActiveGrandStrategyConfidence(eLoopPlayer))26819 {26820 case GUESS_CONFIDENCE_POSITIVE:26821 strTemp.Format("POSITIVE");26822 break;26823 case GUESS_CONFIDENCE_LIKELY:26824 strTemp.Format("Likely");26825 break;26826 case GUESS_CONFIDENCE_UNSURE:26827 strTemp.Format("unsure");26828 break;26829 default:26830 strTemp.Format("XXX");26831 break;26832 }2683326834 strOtherPlayerGrandStrategy += ", " + strTemp;26835 }26836 else26837 {26838 strOtherPlayerGrandStrategy.Format("No GS Guess, ");26839 }2684026841 // Now loop through other players this guy knows26842 for(iOtherPlayerLoop = 0; iOtherPlayerLoop < MAX_MAJOR_CIVS; iOtherPlayerLoop++)26843 {26844 eLoopOtherPlayer = (PlayerTypes) iOtherPlayerLoop;2684526846 // Don't check a player against himself26847 if(eLoopPlayer != eLoopOtherPlayer)26848 {26849 // Do both we and the guy we're looking about know the third guy?26850 if(IsPlayerValid(eLoopOtherPlayer, true) && GET_PLAYER(eLoopPlayer).GetDiplomacyAI()->IsPlayerValid(eLoopOtherPlayer))26851 {26852 thirdPlayerName = GET_PLAYER(eLoopOtherPlayer).getCivilizationShortDescription();2685326854 eGrandStrategy = GetPlayer()->GetGrandStrategyAI()->GetGuessOtherPlayerActiveGrandStrategy(eLoopOtherPlayer);26855 if(eGrandStrategy != NO_AIGRANDSTRATEGY)26856 {26857 strTemp.Format("%s", GC.getAIGrandStrategyInfo(eGrandStrategy)->GetType());26858 strThirdPlayerGrandStrategy = strTemp;2685926860 // Confidence in our guess26861 switch(GetPlayer()->GetGrandStrategyAI()->GetGuessOtherPlayerActiveGrandStrategyConfidence(eLoopOtherPlayer))26862 {26863 case GUESS_CONFIDENCE_POSITIVE:26864 strTemp.Format("Positive");26865 break;26866 case GUESS_CONFIDENCE_LIKELY:26867 strTemp.Format("Likely");26868 break;26869 case GUESS_CONFIDENCE_UNSURE:26870 strTemp.Format("Unsure");26871 break;26872 default:26873 strTemp.Format("XXX");26874 break;26875 }2687626877 strThirdPlayerGrandStrategy += ", " + strTemp;26878 }26879 else26880 {26881 strThirdPlayerGrandStrategy.Format("No GS Guess, ");26882 }2688326884 strOutBuf = strBaseString + ", " + otherPlayerName + ", " + strOtherPlayerGrandStrategy + ", " + thirdPlayerName + ", " + strThirdPlayerGrandStrategy;2688526886 // Overall Opinion26887 switch(GetMajorCivOtherPlayerOpinion(eLoopPlayer, eLoopOtherPlayer))26888 {26889 case MAJOR_CIV_OPINION_ALLY:26890 strTemp.Format("OPN **ALLY**");26891 break;26892 case MAJOR_CIV_OPINION_FRIEND:26893 strTemp.Format("OPN FRIEND");26894 break;26895 case MAJOR_CIV_OPINION_FAVORABLE:26896 strTemp.Format("OPN Favorable");26897 break;26898 case MAJOR_CIV_OPINION_NEUTRAL:26899 strTemp.Format("OPN N");26900 break;26901 case MAJOR_CIV_OPINION_COMPETITOR:26902 strTemp.Format("OPN Competitor");26903 break;26904 case MAJOR_CIV_OPINION_ENEMY:26905 strTemp.Format("OPN ENEMY");26906 break;26907 case MAJOR_CIV_OPINION_UNFORGIVABLE:26908 strTemp.Format("OPN **UNFORGIVABLE**");26909 break;26910 default:26911 strTemp.Format("XXX");26912 break;26913 }26914 strOutBuf += ", " + strTemp;2691526916 // Military Threat26917 switch(GetEstimateOtherPlayerMilitaryThreat(eLoopPlayer, eLoopOtherPlayer))26918 {26919 case THREAT_CRITICAL:26920 strTemp.Format("M_THT **CRITICAL**");26921 break;26922 case THREAT_SEVERE:26923 strTemp.Format("M_THT SEVERE");26924 break;26925 case THREAT_MAJOR:26926 strTemp.Format("M_THT Major");26927 break;26928 case THREAT_MINOR:26929 strTemp.Format("M_THT mnr");26930 break;26931 case THREAT_NONE:26932 strTemp.Format("M_THT N");26933 break;26934 default:26935 strTemp.Format("XXX");26936 break;26937 }26938 strOutBuf += ", " + strTemp;2693926940 // War Damage26941 switch(GetOtherPlayerWarDamageLevel(eLoopPlayer, eLoopOtherPlayer))26942 {26943 case WAR_DAMAGE_LEVEL_CRIPPLED:26944 strTemp.Format("W_DMG **CRIPPLED*");26945 break;26946 case WAR_DAMAGE_LEVEL_SERIOUS:26947 strTemp.Format("W_DMG SERIOUS");26948 break;26949 case WAR_DAMAGE_LEVEL_MAJOR:26950 strTemp.Format("W_DMG Major");26951 break;26952 case WAR_DAMAGE_LEVEL_MINOR:26953 strTemp.Format("W_DMG mnr");26954 break;26955 case WAR_DAMAGE_LEVEL_NONE:26956 strTemp.Format("");26957 break;26958 default:26959 strTemp.Format("XXX");26960 break;26961 }26962 strOutBuf += ", " + strTemp;2696326964 // Proximity26965 switch(GET_PLAYER(eLoopPlayer).GetProximityToPlayer(eLoopOtherPlayer))26966 {26967 case PLAYER_PROXIMITY_NEIGHBORS:26968 strTemp.Format("PRX Neighbors");26969 break;26970 case PLAYER_PROXIMITY_CLOSE:26971 strTemp.Format("PRX Close");26972 break;26973 case PLAYER_PROXIMITY_FAR:26974 strTemp.Format("PRX Far");26975 break;26976 case PLAYER_PROXIMITY_DISTANT:26977 strTemp.Format("PRX Distant");26978 break;26979 default:26980 strTemp.Format("XXX");26981 break;26982 }26983 strOutBuf += ", " + strTemp;2698426985 // Land Dispute26986 switch(GetEstimateOtherPlayerLandDisputeLevel(eLoopPlayer, eLoopOtherPlayer))26987 {26988 case DISPUTE_LEVEL_FIERCE:26989 strTemp.Format("LND **FIERCE**");26990 break;26991 case DISPUTE_LEVEL_STRONG:26992 strTemp.Format("LND STRONG");26993 break;26994 case DISPUTE_LEVEL_WEAK:26995 strTemp.Format("LND Weak");26996 break;26997 case DISPUTE_LEVEL_NONE:26998 strTemp.Format("LND N");26999 break;27000 default:27001 strTemp.Format("XXX");27002 break;27003 }27004 strOutBuf += ", " + strTemp;2700527006 // Victory Dispute27007 switch(GetEstimateOtherPlayerVictoryDisputeLevel(eLoopPlayer, eLoopOtherPlayer))27008 {27009 case DISPUTE_LEVEL_FIERCE:27010 strTemp.Format("VCT **FIERCE**");27011 break;27012 case DISPUTE_LEVEL_STRONG:27013 strTemp.Format("VCT STRONG");27014 break;27015 case DISPUTE_LEVEL_WEAK:27016 strTemp.Format("VCT Weak");27017 break;27018 case DISPUTE_LEVEL_NONE:27019 strTemp.Format("VCT N");27020 break;27021 default:27022 strTemp.Format("XXX");27023 break;27024 }27025 strOutBuf += ", " + strTemp;2702627027 pLog->Msg(strOutBuf);27028 }27029 }27030 }27031 }27032 }27033 }27034}