Bazaar developer reference

CvPlayer::changeNumResourceTotal(ResourceTypes, int, bool)

Defined in
CvPlayer.cpp, line 19885
Class
CvPlayer
Hook name
CivHooks::CvPlayer_changeNumResourceTotal

Hooks

static bool BeforeCvPlayer_changeNumResourceTotal(CvPlayer* self, ResourceTypes eIndex, int iChange, bool bIgnoreResourceWarning);static void AfterCvPlayer_changeNumResourceTotal(CvPlayer* self, ResourceTypes eIndex, int iChange, bool bIgnoreResourceWarning);static void ReplaceCvPlayer_changeNumResourceTotal(void (*original)(CvPlayer*, ResourceTypes, int, bool), CvPlayer* self, ResourceTypes eIndex, int iChange, bool bIgnoreResourceWarning);CivRegisterBefore<CivHooks::CvPlayer_changeNumResourceTotal>(host, &BeforeCvPlayer_changeNumResourceTotal);CivRegisterAfter<CivHooks::CvPlayer_changeNumResourceTotal>(host, &AfterCvPlayer_changeNumResourceTotal);CivRegisterReplace<CivHooks::CvPlayer_changeNumResourceTotal>(host, &ReplaceCvPlayer_changeNumResourceTotal);

Code

19885void CvPlayer::changeNumResourceTotal(ResourceTypes eIndex, int iChange, bool bIgnoreResourceWarning)19886{19887	CvAssert(eIndex >= 0);19888	CvAssert(eIndex < GC.getNumResourceInfos());1988919890	if(iChange != 0)19891	{19892		m_paiNumResourceTotal.setAt(eIndex, m_paiNumResourceTotal[eIndex] + iChange);1989319894		// Minors with an Ally give their Resources to their friend (awww)19895		if(isMinorCiv())19896		{19897			PlayerTypes eBestRelationsPlayer = GetMinorCivAI()->GetAlly();1989819899			if(eBestRelationsPlayer != NO_PLAYER)19900			{19901				ResourceUsageTypes eUsage = GC.getResourceInfo(eIndex)->getResourceUsage();1990219903				if(eUsage == RESOURCEUSAGE_STRATEGIC || eUsage == RESOURCEUSAGE_LUXURY)19904				{19905					// Someone new is getting the bonus19906					if(eBestRelationsPlayer != NO_PLAYER)19907					{19908						GET_PLAYER(eBestRelationsPlayer).changeResourceFromMinors(eIndex, iChange);19909						changeResourceExport(eIndex, iChange);1991019911						CvNotifications* pNotifications = GET_PLAYER(eBestRelationsPlayer).GetNotifications();19912						if(pNotifications && !GetMinorCivAI()->IsDisableNotifications())19913						{19914							Localization::String strMessage;19915							Localization::String strSummary;1991619917							// Adding Resources19918							if(iChange > 0)19919							{19920								strMessage = Localization::Lookup("TXT_KEY_NOTIFICATION_MINOR_BFF_NEW_RESOURCE");19921								strMessage << getNameKey() << GC.getResourceInfo(eIndex)->GetDescriptionKey();19922								strSummary = Localization::Lookup("TXT_KEY_NOTIFICATION_SUMMARY_MINOR_BFF_NEW_RESOURCE");19923								strSummary << getNameKey() << GC.getResourceInfo(eIndex)->GetDescriptionKey();19924							}19925							// Lost Resources19926							else19927							{19928								strMessage = Localization::Lookup("TXT_KEY_NOTIFICATION_MINOR_BFF_LOST_RESOURCE");19929								strMessage << getNameKey() << GC.getResourceInfo(eIndex)->GetDescriptionKey();19930								strSummary = Localization::Lookup("TXT_KEY_NOTIFICATION_SUMMARY_MINOR_BFF_LOST_RESOURCE");19931								strSummary << getNameKey() << GC.getResourceInfo(eIndex)->GetDescriptionKey();19932							}1993319934							int iX = -1;19935							int iY = -1;1993619937							CvCity* capCity = getCapitalCity();1993819939							if(capCity != NULL)19940							{19941								iX = capCity->getX();19942								iY = capCity->getY();19943							}1994419945							pNotifications->Add(NOTIFICATION_MINOR, strMessage.toUTF8(), strSummary.toUTF8(), iX, iY, -1);19946						}19947					}19948				}19949			}19950		}1995119952		// Any players siphoning resources from us need to be updated as well19953		for (int iPlayerLoop = 0; iPlayerLoop < MAX_PLAYERS; iPlayerLoop++)19954		{19955			GET_PLAYER((PlayerTypes)iPlayerLoop).UpdateResourcesSiphoned();19956		}19957	}1995819959	if(iChange < 0 && !bIgnoreResourceWarning)19960		DoTestOverResourceNotification(eIndex);1996119962	GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);1996319964	CvAssert(m_paiNumResourceTotal[eIndex] >= 0);19965}

Calls

Called by