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
- CvDiplomacyAI::GetPlayerTargetValue(PlayerTypes) const
- CvDiplomacyAI::GetWarProjection(PlayerTypes) const
- CvDiplomacyAI::GetWarScore(PlayerTypes)
- CvDiplomacyAI::IsPlayerValid(PlayerTypes, bool)
- CvDiplomacyAI::SetLastWarProjection(PlayerTypes, WarProjectionTypes)
- CvDiplomacyAI::SetWarProjection(PlayerTypes, WarProjectionTypes)
- CvGlobals::getWAR_PROJECTION_THRESHOLD_DEFEAT()
- CvGlobals::getWAR_PROJECTION_THRESHOLD_DESTRUCTION()
- CvGlobals::getWAR_PROJECTION_THRESHOLD_GOOD()
- CvGlobals::getWAR_PROJECTION_THRESHOLD_STALEMATE()
- CvGlobals::getWAR_PROJECTION_THRESHOLD_VERY_GOOD()