Bazaar developer reference

CvDiplomacyAI::DoUpdateWarProjections()

Defined in
CvDiplomacyAI.cpp, line 6165
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoUpdateWarProjections

Hooks

static bool BeforeCvDiplomacyAI_DoUpdateWarProjections(CvDiplomacyAI* self);static void AfterCvDiplomacyAI_DoUpdateWarProjections(CvDiplomacyAI* self);static void ReplaceCvDiplomacyAI_DoUpdateWarProjections(void (*original)(CvDiplomacyAI*), CvDiplomacyAI* self);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoUpdateWarProjections>(host, &BeforeCvDiplomacyAI_DoUpdateWarProjections);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoUpdateWarProjections>(host, &AfterCvDiplomacyAI_DoUpdateWarProjections);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoUpdateWarProjections>(host, &ReplaceCvDiplomacyAI_DoUpdateWarProjections);

Code

6164/// Updates what the Projection of war is with all Players6165void CvDiplomacyAI::DoUpdateWarProjections()6166{6167	WarProjectionTypes eWarProjection;61686169	int iWarScore;61706171	// Loop through all (known) Players6172	PlayerTypes eLoopPlayer;6173	for(int iPlayerLoop = 0; iPlayerLoop < MAX_CIV_PLAYERS; iPlayerLoop++)6174	{6175		eLoopPlayer = (PlayerTypes) iPlayerLoop;61766177		if(IsPlayerValid(eLoopPlayer))6178		{6179			eWarProjection = NO_WAR_PROJECTION_TYPE;61806181			// War?6182//			if (IsAtWar(eLoopPlayer))6183			{6184				iWarScore = GetWarScore(eLoopPlayer);61856186				// Do the final math6187				if(iWarScore >= /*100*/ GC.getWAR_PROJECTION_THRESHOLD_VERY_GOOD())6188					eWarProjection = WAR_PROJECTION_VERY_GOOD;6189				else if(iWarScore >= /*25*/ GC.getWAR_PROJECTION_THRESHOLD_GOOD())6190					eWarProjection = WAR_PROJECTION_GOOD;6191				else if(iWarScore <= /*-100*/ GC.getWAR_PROJECTION_THRESHOLD_DESTRUCTION())6192					eWarProjection = WAR_PROJECTION_DESTRUCTION;6193				else if(iWarScore <= /*-25*/ GC.getWAR_PROJECTION_THRESHOLD_DEFEAT())6194					eWarProjection = WAR_PROJECTION_DEFEAT;6195				else if(iWarScore <= /*0*/ GC.getWAR_PROJECTION_THRESHOLD_STALEMATE())6196					eWarProjection = WAR_PROJECTION_STALEMATE;6197				else6198					eWarProjection = WAR_PROJECTION_UNKNOWN;61996200				// If they're a bad target then the best we can do is a stalemate6201				if(GetPlayerTargetValue(eLoopPlayer) <= TARGET_VALUE_BAD)6202				{6203					if(eWarProjection >= WAR_PROJECTION_GOOD)6204						eWarProjection = WAR_PROJECTION_STALEMATE;6205				}6206			}62076208			if (GetWarProjection(eLoopPlayer) != NO_WAR_PROJECTION_TYPE)6209			{6210				SetLastWarProjection(eLoopPlayer, GetWarProjection(eLoopPlayer));6211			}6212			else6213			{6214				// for now, set it to be unknown because we can't set it to NO_WAR_PROJECTION_TYPE6215				SetLastWarProjection(eLoopPlayer, WAR_PROJECTION_UNKNOWN);6216			}62176218			SetWarProjection(eLoopPlayer, eWarProjection);6219		}6220	}6221}

Calls

Called by