Hooks
static bool BeforeCvGameCulture_GetGreatWorkTooltip(const CvGameCulture* self, int iIndex, PlayerTypes eOwner, CvString& result);static void AfterCvGameCulture_GetGreatWorkTooltip(const CvGameCulture* self, int iIndex, PlayerTypes eOwner, CvString& result);static CvString ReplaceCvGameCulture_GetGreatWorkTooltip(CvString (*original)(const CvGameCulture*, int, PlayerTypes), const CvGameCulture* self, int iIndex, PlayerTypes eOwner);CivRegisterBefore<CivHooks::CvGameCulture_GetGreatWorkTooltip>(host, &BeforeCvGameCulture_GetGreatWorkTooltip);CivRegisterAfter<CivHooks::CvGameCulture_GetGreatWorkTooltip>(host, &AfterCvGameCulture_GetGreatWorkTooltip);CivRegisterReplace<CivHooks::CvGameCulture_GetGreatWorkTooltip>(host, &ReplaceCvGameCulture_GetGreatWorkTooltip);
Code
164/// Returns UI tooltip for this Great Work165CvString CvGameCulture::GetGreatWorkTooltip(int iIndex, PlayerTypes eOwner) const166{167 CvAssertMsg (iIndex < GetNumGreatWorks(), "Bad Great Work index");168 CvString szTooltip = "";169170 const CvGreatWork *pWork = &m_CurrentGreatWorks[iIndex];171172 CvString strYearString;173 CvGameTextMgr::setDateStr(strYearString,174 pWork->m_iTurnFounded,175 false /*bSave*/,176 GC.getGame().getCalendar(),177 GC.getGame().getStartYear(),178 GC.getGame().getGameSpeedType());179180 Localization::String strGreatWorkName = Localization::Lookup(CultureHelpers::GetGreatWorkName(pWork->m_eType));181182 szTooltip = strGreatWorkName.toUTF8();183 szTooltip += "[NEWLINE]";184185 if (strlen(pWork->m_szGreatPersonName) > 0)186 {187 szTooltip += pWork->m_szGreatPersonName;188 szTooltip += "[NEWLINE]";189 }190 szTooltip += GET_PLAYER(pWork->m_ePlayer).getCivilizationShortDescription();191 szTooltip += "[NEWLINE]";192 szTooltip += GC.getEraInfo(pWork->m_eEra)->GetDescription();193 szTooltip += " (";194 szTooltip += strYearString;195 szTooltip += ")";196 szTooltip += "[NEWLINE]";197 CvString cultureString;198199#if defined(MOD_API_UNIFIED_YIELDS)200 cultureString = "";201 char* sPrefix = "";202 int iTourismPerWork = GC.getBASE_TOURISM_PER_GREAT_WORK();203 int iValue;204 205 for (int iYield = 0; iYield < NUM_YIELD_TYPES; iYield++) {206 YieldTypes eYield = (YieldTypes) iYield;207 208 if (eYield == YIELD_CULTURE) {209 iValue = GC.getBASE_CULTURE_PER_GREAT_WORK();210#if defined(MOD_API_UNIFIED_YIELDS_TOURISM)211 } else if (eYield == YIELD_TOURISM) {212 iValue = iTourismPerWork;213#endif214 } else {215 iValue = 0;216 }217218 iValue += GET_PLAYER(eOwner).GetGreatWorkYieldChange(eYield);219 iValue += GET_PLAYER(eOwner).GetPlayerTraits()->GetGreatWorkYieldChanges(eYield);220221 CvCity* pCity = GetGreatWorkCity(iIndex);222 if (pCity) {223 ReligionTypes eMajority = pCity->GetCityReligions()->GetReligiousMajority();224 if(eMajority >= RELIGION_PANTHEON)225 {226 const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, pCity->getOwner());227 if(pReligion)228 {229 iValue += pReligion->m_Beliefs.GetGreatWorkYieldChange(pCity->getPopulation(), eYield);230 BeliefTypes eSecondaryPantheon = pCity->GetCityReligions()->GetSecondaryReligionPantheonBelief();231 if (eSecondaryPantheon != NO_BELIEF)232 {233 iValue += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetGreatWorkYieldChange(eYield);234 }235 }236 }237 }238239 if (iValue > 0) {240 cultureString.Format("%s%s+%d %s", cultureString.c_str(), sPrefix, iValue, GC.getYieldInfo(eYield)->getIconString());241 sPrefix = ", ";242 }243 }244 245#if !defined(MOD_API_UNIFIED_YIELDS_TOURISM)246 cultureString.Format("%s, +%d [ICON_TOURISM]", cultureString.c_str(), iTourismPerWork);247#endif248#else249 int iCulturePerWork = GC.getBASE_CULTURE_PER_GREAT_WORK();250 iCulturePerWork += GET_PLAYER(eOwner).GetGreatWorkYieldChange(YIELD_CULTURE);251 int iTourismPerWork = GC.getBASE_TOURISM_PER_GREAT_WORK();252 cultureString.Format ("+%d [ICON_CULTURE], +%d [ICON_TOURISM]", iCulturePerWork, iTourismPerWork);253#endif254255 szTooltip += cultureString;256257 return szTooltip;258}