Hooks
static bool BeforeCvLeague_GetCurrentEffectsSummary(CvLeague* self, PlayerTypes arg0, std::vector<CvString>& result);static void AfterCvLeague_GetCurrentEffectsSummary(CvLeague* self, PlayerTypes arg0, std::vector<CvString>& result);static std::vector<CvString> ReplaceCvLeague_GetCurrentEffectsSummary(std::vector<CvString> (*original)(CvLeague*, PlayerTypes), CvLeague* self, PlayerTypes arg0);CivRegisterBefore<CivHooks::CvLeague_GetCurrentEffectsSummary>(host, &BeforeCvLeague_GetCurrentEffectsSummary);CivRegisterAfter<CivHooks::CvLeague_GetCurrentEffectsSummary>(host, &AfterCvLeague_GetCurrentEffectsSummary);CivRegisterReplace<CivHooks::CvLeague_GetCurrentEffectsSummary>(host, &ReplaceCvLeague_GetCurrentEffectsSummary);
Code
4779std::vector<CvString> CvLeague::GetCurrentEffectsSummary(PlayerTypes /*eObserver*/)4780{4781 std::vector<CvString> vsEffects;47824783 // League status4784 if (HasHostMember())4785 {4786 PlayerTypes eHost = GetHostMember();4787 if (eHost != NO_PLAYER)4788 {4789 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_HOST");4790 sTemp << GET_PLAYER(eHost).getCivilizationShortDescriptionKey();4791 vsEffects.push_back(sTemp.toUTF8());4792 }4793 }47944795 // Active projects4796 int iProjects = 0;4797 CvString sProjects = "";4798 for (ProjectList::const_iterator it = m_vProjects.begin(); it != m_vProjects.end(); ++it)4799 {4800 if (IsProjectActive(it->eType) && !IsProjectComplete(it->eType))4801 {4802 CvLeagueProjectEntry* pInfo = GC.getLeagueProjectInfo(it->eType);4803 if (pInfo)4804 {4805 if (iProjects != 0)4806 {4807 sProjects += ", ";4808 }4809 iProjects++;4810 sProjects += pInfo->GetDescription();4811 }4812 }4813 }4814 if (iProjects > 0)4815 {4816 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_ACTIVE_PROJECTS");4817 sTemp << sProjects;4818 vsEffects.push_back(sTemp.toUTF8());4819 }48204821 // Ongoing resolution effects4822 ReligionTypes eWorldReligion = NO_RELIGION;4823 PolicyBranchTypes eWorldIdeology = NO_POLICY_BRANCH_TYPE;4824 FStaticVector<PlayerTypes, MAX_MAJOR_CIVS, true, c_eCiv5GameplayDLL> veEmbargoedPlayers;4825 FStaticVector<ResourceTypes, 32, true, c_eCiv5GameplayDLL> veBannedResources;4826 CvResolutionEffects effects;4827 for (ActiveResolutionList::iterator it = m_vActiveResolutions.begin(); it != m_vActiveResolutions.end(); ++it)4828 {4829 effects.AddOngoingEffects(it->GetEffects());48304831 if (it->GetEffects()->iResourceQuantity != 0)4832 {4833 //antonjs: todo: for modders4834 }48354836 if (it->GetEffects()->bEmbargoPlayer)4837 {4838 PlayerTypes eEmbargoedPlayer = (PlayerTypes) it->GetProposerDecision()->GetDecision();4839 CvAssert(eEmbargoedPlayer != NO_PLAYER);4840 veEmbargoedPlayers.push_back(eEmbargoedPlayer);4841 }48424843 if (it->GetEffects()->bNoResourceHappiness)4844 {4845 ResourceTypes eBannedResource = (ResourceTypes) it->GetProposerDecision()->GetDecision();4846 CvAssert(eBannedResource != NO_RESOURCE);4847 veBannedResources.push_back(eBannedResource);4848 }48494850 if (it->GetEffects()->iVotesForFollowingReligion != 0)4851 {4852 ReligionTypes eReligion = (ReligionTypes) it->GetProposerDecision()->GetDecision();4853 CvAssert(eReligion != NO_RELIGION);4854 CvAssert(eWorldReligion == NO_RELIGION);4855 eWorldReligion = eReligion;4856 }48574858 if (it->GetEffects()->iVotesForFollowingIdeology != 0)4859 {4860 PolicyBranchTypes eIdeology = (PolicyBranchTypes) it->GetProposerDecision()->GetDecision();4861 CvAssert(eIdeology != NO_POLICY_BRANCH_TYPE);4862 CvAssert(eWorldIdeology == NO_POLICY_BRANCH_TYPE);4863 eWorldIdeology = eIdeology;4864 }4865 }4866 if (eWorldReligion != NO_RELIGION)4867 {4868 CvReligionEntry* pInfo = GC.getReligionInfo(eWorldReligion);4869 CvAssert(pInfo != NULL);4870 const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eWorldReligion, NO_PLAYER);4871 CvAssert(pReligion != NULL);4872 if (pInfo != NULL && pReligion != NULL)4873 {4874 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_WORLD_RELIGION");4875 sTemp << pInfo->GetIconString() << pReligion->GetName();4876 vsEffects.push_back(sTemp.toUTF8());4877 }4878 }4879 if (eWorldIdeology != NO_POLICY_BRANCH_TYPE)4880 {4881 CvPolicyBranchEntry* pInfo = GC.getPolicyBranchInfo(eWorldIdeology);4882 CvAssert(pInfo != NULL);4883 if (pInfo != NULL)4884 {4885 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_WORLD_IDEOLOGY");4886 sTemp << pInfo->GetDescriptionKey();4887 vsEffects.push_back(sTemp.toUTF8());4888 }4889 }4890 if (effects.iGoldPerTurn != 0)4891 {4892 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GPT");4893 sTemp << effects.iGoldPerTurn;4894 vsEffects.push_back(sTemp.toUTF8());4895 }4896 if (effects.iResourceQuantity != 0)4897 {4898 //antonjs: todo: for modders4899 }4900 if (effects.bEmbargoCityStates)4901 {4902 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_EMBARGO_CITY_STATES");4903 vsEffects.push_back(sTemp.toUTF8());4904 }4905 if (effects.bEmbargoPlayer)4906 {4907 CvAssert(!veEmbargoedPlayers.empty());4908 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_EMBARGO_PLAYERS");4909 CvString sEntries = "";4910 for (uint i = 0; i < veEmbargoedPlayers.size(); i++)4911 {4912 Localization::String sTempEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_EMBARGO_PLAYERS_ENTRY");4913 CvAssert(veEmbargoedPlayers[i] != NO_PLAYER);4914 if (veEmbargoedPlayers[i] != NO_PLAYER)4915 {4916 if (i != 0)4917 {4918 sEntries += ", ";4919 }4920 sTempEntry << GET_PLAYER(veEmbargoedPlayers[i]).getCivilizationShortDescriptionKey();4921 sEntries += sTempEntry.toUTF8();4922 }4923 }4924 sTemp << sEntries;4925 vsEffects.push_back(sTemp.toUTF8());4926 }4927 if (effects.bNoResourceHappiness)4928 {4929 CvAssert(!veBannedResources.empty());4930 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_NO_RESOURCE_HAPPINESS");4931 CvString sEntries = "";4932 for (uint i = 0; i < veBannedResources.size(); i++)4933 {4934 Localization::String sTempEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_NO_RESOURCE_HAPPINESS_ENTRY");4935 CvResourceInfo* pInfo = GC.getResourceInfo(veBannedResources[i]);4936 CvAssert(pInfo);4937 if (pInfo)4938 {4939 if (i != 0)4940 {4941 sEntries += ", ";4942 }4943 sTempEntry << pInfo->GetDescriptionKey();4944 sEntries += pInfo->GetIconString();4945 sEntries += sTempEntry.toUTF8();4946 }4947 }4948 sTemp << sEntries;4949 vsEffects.push_back(sTemp.toUTF8());4950 }49514952 if (effects.iUnitMaintenanceGoldPercent != 0)4953 {4954 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_UNIT_MAINTENANCE");4955 sTemp << effects.iUnitMaintenanceGoldPercent;4956 vsEffects.push_back(sTemp.toUTF8());4957 }4958 if (effects.iMemberDiscoveredTechMod != 0)4959 {4960 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_DISCOVERED_TECH_MODIFIER");4961 sTemp << effects.iMemberDiscoveredTechMod;4962 vsEffects.push_back(sTemp.toUTF8());4963 }4964 if (effects.iCulturePerWonder != 0)4965 {4966 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_CULTURE_FROM_WONDERS");4967 sTemp << effects.iCulturePerWonder;4968 vsEffects.push_back(sTemp.toUTF8());4969 }4970 if (effects.iCulturePerNaturalWonder != 0)4971 {4972 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_CULTURE_FROM_NATURAL_WONDERS");4973 sTemp << effects.iCulturePerNaturalWonder;4974 vsEffects.push_back(sTemp.toUTF8());4975 }4976 if (effects.iArtsyGreatPersonRateMod != 0)4977 {4978 int iMod = effects.iArtsyGreatPersonRateMod;4979 Localization::String sTemp = (iMod > 0) ? Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_POSITIVE_GREAT_PERSON_RATE") : Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_NEGATIVE_GREAT_PERSON_RATE");4980 sTemp << iMod;4981 4982 CvString sList = "";4983 CvUnitClassInfo* pInfo = GC.getUnitClassInfo((UnitClassTypes)GC.getInfoTypeForString("UNITCLASS_WRITER"));4984 if (pInfo != NULL)4985 {4986 if (sList != "")4987 sList += ", ";4988 Localization::String sEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_RATE_ENTRY");4989 sEntry << pInfo->GetDescriptionKey();4990 sList += sEntry.toUTF8();4991 }4992 pInfo = GC.getUnitClassInfo((UnitClassTypes)GC.getInfoTypeForString("UNITCLASS_ARTIST"));4993 if (pInfo != NULL)4994 {4995 if (sList != "")4996 sList += ", ";4997 Localization::String sEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_RATE_ENTRY");4998 sEntry << pInfo->GetDescriptionKey();4999 sList += sEntry.toUTF8();5000 }5001 pInfo = GC.getUnitClassInfo((UnitClassTypes)GC.getInfoTypeForString("UNITCLASS_MUSICIAN"));5002 if (pInfo != NULL)5003 {5004 if (sList != "")5005 sList += ", ";5006 Localization::String sEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_RATE_ENTRY");5007 sEntry << pInfo->GetDescriptionKey();5008 sList += sEntry.toUTF8();5009 }5010 sTemp << sList;5011 vsEffects.push_back(sTemp.toUTF8());5012 }5013 if (effects.iScienceyGreatPersonRateMod != 0)5014 {5015 int iMod = effects.iScienceyGreatPersonRateMod;5016 Localization::String sTemp = (iMod > 0) ? Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_POSITIVE_GREAT_PERSON_RATE") : Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_NEGATIVE_GREAT_PERSON_RATE");5017 sTemp << iMod;50185019 CvString sList = "";5020 CvUnitClassInfo* pInfo = GC.getUnitClassInfo((UnitClassTypes)GC.getInfoTypeForString("UNITCLASS_SCIENTIST"));5021 if (pInfo != NULL)5022 {5023 if (sList != "")5024 sList += ", ";5025 Localization::String sEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_RATE_ENTRY");5026 sEntry << pInfo->GetDescriptionKey();5027 sList += sEntry.toUTF8();5028 }5029 pInfo = GC.getUnitClassInfo((UnitClassTypes)GC.getInfoTypeForString("UNITCLASS_ENGINEER"));5030 if (pInfo != NULL)5031 {5032 if (sList != "")5033 sList += ", ";5034 Localization::String sEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_RATE_ENTRY");5035 sEntry << pInfo->GetDescriptionKey();5036 sList += sEntry.toUTF8();5037 }5038 pInfo = GC.getUnitClassInfo((UnitClassTypes)GC.getInfoTypeForString("UNITCLASS_MERCHANT"));5039 if (pInfo != NULL)5040 {5041 if (sList != "")5042 sList += ", ";5043 Localization::String sEntry = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_RATE_ENTRY");5044 sEntry << pInfo->GetDescriptionKey();5045 sList += sEntry.toUTF8();5046 }5047 sTemp << sList;5048 vsEffects.push_back(sTemp.toUTF8());5049 }5050 if (effects.iGreatPersonTileImprovementCulture != 0)5051 {5052 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_GREAT_PERSON_TILE_IMPROVEMENT_CULTURE");5053 sTemp << effects.iGreatPersonTileImprovementCulture;5054 vsEffects.push_back(sTemp.toUTF8());5055 }5056 if (effects.iLandmarkCulture != 0)5057 {5058 Localization::String sTemp = Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_LANDMARK_CULTURE");5059 sTemp << effects.iLandmarkCulture;5060 vsEffects.push_back(sTemp.toUTF8());5061 }50625063 if (vsEffects.empty())5064 {5065 vsEffects.push_back(Localization::Lookup("TXT_KEY_LEAGUE_OVERVIEW_EFFECT_SUMMARY_NONE").toUTF8());5066 }50675068 return vsEffects;5069}