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
- CvGame::GetNumMinorCivsEver()
- CvGame::isOption(GameOptionTypes) const
- CvGame::isVictoryValid(VictoryTypes) const
- CvGlobals::getGame()
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvGlobals::getResolutionInfo(ResolutionTypes)
- CvPlayer::getNumCities() const
- CvPlayer::isAlive() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvResolutionEntry::GetHolyCityTourism() const
- CvResolutionEntry::GetMemberDiscoveredTechMod() const
- CvResolutionEntry::GetOtherIdeologyRebellionMod() const
- CvResolutionEntry::GetReligionSpreadStrengthMod() const
- CvResolutionEntry::GetVotesForFollowingIdeology() const
- CvResolutionEntry::GetVotesForFollowingReligion() const
- CvResolutionEntry::IsDiplomaticVictory() const
- CvResolutionEntry::IsEmbargoCityStates() const
- CvResolutionEntry::IsEmbargoPlayer() const
- CvResolutionEntry::IsNoResourceHappiness() const
Localization::LookupLocalization::String::toUTF8std::basic_string::operator+=