Bazaar developer reference

CvDiplomacyAI::LogOtherPlayerGuessStatus()

Defined in
CvDiplomacyAI.cpp, line 26755
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_LogOtherPlayerGuessStatus

Hooks

static bool BeforeCvDiplomacyAI_LogOtherPlayerGuessStatus(CvDiplomacyAI* self);static void AfterCvDiplomacyAI_LogOtherPlayerGuessStatus(CvDiplomacyAI* self);static void ReplaceCvDiplomacyAI_LogOtherPlayerGuessStatus(void (*original)(CvDiplomacyAI*), CvDiplomacyAI* self);CivRegisterBefore<CivHooks::CvDiplomacyAI_LogOtherPlayerGuessStatus>(host, &BeforeCvDiplomacyAI_LogOtherPlayerGuessStatus);CivRegisterAfter<CivHooks::CvDiplomacyAI_LogOtherPlayerGuessStatus>(host, &AfterCvDiplomacyAI_LogOtherPlayerGuessStatus);CivRegisterReplace<CivHooks::CvDiplomacyAI_LogOtherPlayerGuessStatus>(host, &ReplaceCvDiplomacyAI_LogOtherPlayerGuessStatus);

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}

Calls

Called by