Bazaar developer reference

CvLeague::IsResolutionEffectsValid(ResolutionTypes, int, CvString *)

Defined in
CvVotingClasses.cpp, line 2630
Class
CvLeague
Hook name
CivHooks::CvLeague_IsResolutionEffectsValid

Hooks

static bool BeforeCvLeague_IsResolutionEffectsValid(CvLeague* self, ResolutionTypes eResolution, int iProposerChoice, CvString* sTooltipSink, bool& result);static void AfterCvLeague_IsResolutionEffectsValid(CvLeague* self, ResolutionTypes eResolution, int iProposerChoice, CvString* sTooltipSink, bool& result);static bool ReplaceCvLeague_IsResolutionEffectsValid(bool (*original)(CvLeague*, ResolutionTypes, int, CvString*), CvLeague* self, ResolutionTypes eResolution, int iProposerChoice, CvString* sTooltipSink);CivRegisterBefore<CivHooks::CvLeague_IsResolutionEffectsValid>(host, &BeforeCvLeague_IsResolutionEffectsValid);CivRegisterAfter<CivHooks::CvLeague_IsResolutionEffectsValid>(host, &AfterCvLeague_IsResolutionEffectsValid);CivRegisterReplace<CivHooks::CvLeague_IsResolutionEffectsValid>(host, &ReplaceCvLeague_IsResolutionEffectsValid);

Code

2629// Check if a resolution's effects are valid in the game (Game Options, Embargo on a civ that is now dead, etc.)2630bool CvLeague::IsResolutionEffectsValid(ResolutionTypes eResolution, int iProposerChoice, CvString* sTooltipSink)2631{2632	if (eResolution == NO_RESOLUTION)2633	{2634		return false;2635	}2636	CvResolutionEntry* pInfo = GC.getResolutionInfo(eResolution);2637	if (pInfo == NULL)2638	{2639		return false;2640	}26412642	if (pInfo->IsDiplomaticVictory())2643	{2644		VictoryTypes eDiploVictory = (VictoryTypes) GC.getInfoTypeForString("VICTORY_DIPLOMATIC", true);2645		if (eDiploVictory == NO_VICTORY)2646		{2647			if (sTooltipSink != NULL)2648			{2649				(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2650				(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2651				(*sTooltipSink) += "[ENDCOLOR]";2652			}2653			return false;2654		}2655		else2656		{2657			if (!GC.getGame().isVictoryValid(eDiploVictory))2658			{2659				if (sTooltipSink != NULL)2660				{2661					(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2662					(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2663					(*sTooltipSink) += "[ENDCOLOR]";2664				}2665				return false;2666			}2667		}2668	}2669	if (pInfo->IsEmbargoCityStates())2670	{2671		if (GC.getGame().GetNumMinorCivsEver() <= 0)2672		{2673			if (sTooltipSink != NULL)2674			{2675				(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2676				(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2677				(*sTooltipSink) += "[ENDCOLOR]";2678			}2679			return false;2680		}2681	}2682	if (pInfo->IsEmbargoPlayer())2683	{2684		PlayerTypes eTargetPlayer = (PlayerTypes) iProposerChoice;2685		CvAssert(eTargetPlayer >= 0 && eTargetPlayer < MAX_MAJOR_CIVS);2686		if (eTargetPlayer >= 0 && eTargetPlayer < MAX_MAJOR_CIVS)2687		{2688			// Player is dead2689			if (!GET_PLAYER(eTargetPlayer).isAlive())2690			{2691				return false;2692			}26932694			// Player is alive but no cities left (Complete Kills option)2695			if (GET_PLAYER(eTargetPlayer).getNumCities() <= 0)2696			{2697				return false;2698			}2699		}2700	}2701	if (pInfo->IsNoResourceHappiness())2702	{2703		if (GC.getGame().isOption(GAMEOPTION_NO_HAPPINESS))2704		{2705			if (sTooltipSink != NULL)2706			{2707				(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2708				(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2709				(*sTooltipSink) += "[ENDCOLOR]";2710			}2711			return false;2712		}2713	}2714	if (pInfo->GetMemberDiscoveredTechMod() != 0)2715	{2716		if (GC.getGame().isOption(GAMEOPTION_NO_SCIENCE))2717		{2718			if (sTooltipSink != NULL)2719			{2720				(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2721				(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2722				(*sTooltipSink) += "[ENDCOLOR]";2723			}2724			return false;2725		}2726	}2727	if (pInfo->GetVotesForFollowingReligion() != 0 ||2728		pInfo->GetHolyCityTourism() != 0 ||2729		pInfo->GetReligionSpreadStrengthMod() != 0)2730	{2731		if (GC.getGame().isOption(GAMEOPTION_NO_RELIGION))2732		{2733			if (sTooltipSink != NULL)2734			{2735				(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2736				(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2737				(*sTooltipSink) += "[ENDCOLOR]";2738			}2739			return false;2740		}2741	}2742	if (pInfo->GetVotesForFollowingIdeology() != 0 ||2743		pInfo->GetOtherIdeologyRebellionMod() != 0)2744	{2745		if (GC.getGame().isOption(GAMEOPTION_NO_POLICIES))2746		{2747			if (sTooltipSink != NULL)2748			{2749				(*sTooltipSink) += "[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]";2750				(*sTooltipSink) += Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_INVALID_RESOLUTION_GAMEOPTION").toUTF8();2751				(*sTooltipSink) += "[ENDCOLOR]";2752			}2753			return false;2754		}2755	}27562757	return true;2758}

Calls

Called by