Hooks
static bool BeforeCvLeague_GetResolutionDetails(CvLeague* self, ResolutionTypes eResolution, PlayerTypes eObserver, int iResolutionID, int iProposerChoice, CvString& result);static void AfterCvLeague_GetResolutionDetails(CvLeague* self, ResolutionTypes eResolution, PlayerTypes eObserver, int iResolutionID, int iProposerChoice, CvString& result);static CvString ReplaceCvLeague_GetResolutionDetails(CvString (*original)(CvLeague*, ResolutionTypes, PlayerTypes, int, int), CvLeague* self, ResolutionTypes eResolution, PlayerTypes eObserver, int iResolutionID, int iProposerChoice);CivRegisterBefore<CivHooks::CvLeague_GetResolutionDetails>(host, &BeforeCvLeague_GetResolutionDetails);CivRegisterAfter<CivHooks::CvLeague_GetResolutionDetails>(host, &AfterCvLeague_GetResolutionDetails);CivRegisterReplace<CivHooks::CvLeague_GetResolutionDetails>(host, &ReplaceCvLeague_GetResolutionDetails);
Code
4181CvString CvLeague::GetResolutionDetails(ResolutionTypes eResolution, PlayerTypes eObserver, int iResolutionID, int iProposerChoice)4182{4183 CvString s = "";4184 4185 CvResolutionEntry* pInfo = GC.getResolutionInfo(eResolution);4186 CvAssertMsg(pInfo, "Resolution info not found when assembling details text. Please send Anton your save file and version.");4187 if (!pInfo)4188 {4189 CvAssert(false);4190 return "";4191 }41924193 // Resolution type info4194 s += Localization::Lookup(pInfo->GetHelp()).toUTF8();41954196 // Refers to an existing resolution4197 if (iResolutionID != -1)4198 {4199 CvString sDisabled = "";42004201 // Would vote to enact or repeal4202 if (IsProposed(iResolutionID, /*bRepeal*/false) || IsProposed(iResolutionID, /*bRepeal*/true))4203 {4204 s += GetResolutionVoteOpinionDetails(eResolution, eObserver, iResolutionID);4205 }4206 // It's on hold4207 else if (IsProposed(iResolutionID, /*bRepeal*/false, /*bCheckOnHold*/true) || IsProposed(iResolutionID, /*bRepeal*/true, /*bCheckOnHold*/true))4208 { 4209 }4210 // Would propose repeal4211 else if (CanProposeRepeal(iResolutionID, eObserver, &sDisabled))4212 {4213 s += GetResolutionProposeOpinionDetails(iResolutionID, eObserver);4214 }4215 else4216 {4217 s += sDisabled;4218 }4219 }4220 // A new resolution4221 else4222 {4223 // Check our choice4224 CvString sDisabled = "";4225 if (CanProposeEnact(eResolution, eObserver, iProposerChoice, &sDisabled))4226 {4227 s += GetResolutionProposeOpinionDetails(eResolution, eObserver, iProposerChoice);4228 }4229 else4230 {4231 s += sDisabled;4232 }42334234 // Additional tooltip if there are no valid choices4235 if (strcmp(sDisabled, "") == 0)4236 {4237 if (pInfo->GetProposerDecision() != RESOLUTION_DECISION_NONE && !CanProposeEnactAnyChoice(eResolution, eObserver))4238 {4239 s += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";4240 s += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_NO_CHOICES").toUTF8();4241 s += "[ENDCOLOR]";4242 }4243 }4244 }42454246 return s;4247}