Bazaar developer reference

CvPlayer::UpdateResourcesSiphoned()

Defined in
CvPlayer.cpp, line 19996
Class
CvPlayer
Hook name
CivHooks::CvPlayer_UpdateResourcesSiphoned

Hooks

static bool BeforeCvPlayer_UpdateResourcesSiphoned(CvPlayer* self);static void AfterCvPlayer_UpdateResourcesSiphoned(CvPlayer* self);static void ReplaceCvPlayer_UpdateResourcesSiphoned(void (*original)(CvPlayer*), CvPlayer* self);CivRegisterBefore<CivHooks::CvPlayer_UpdateResourcesSiphoned>(host, &BeforeCvPlayer_UpdateResourcesSiphoned);CivRegisterAfter<CivHooks::CvPlayer_UpdateResourcesSiphoned>(host, &AfterCvPlayer_UpdateResourcesSiphoned);CivRegisterReplace<CivHooks::CvPlayer_UpdateResourcesSiphoned>(host, &ReplaceCvPlayer_UpdateResourcesSiphoned);

Code

19994/// Count up the number of resources we have been siphoning from others and compare it to how many 19995/// we are now allowed to siphon.  Change our resource count if there is a discrepancy.19996void CvPlayer::UpdateResourcesSiphoned()19997{19998	FStaticVector<int, 64, true, c_eCiv5GameplayDLL> vDeltas;19999	20000	// Subtract all currently siphoned resources20001	for (int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)20002	{20003		ResourceTypes eResourceLoop = (ResourceTypes) iResourceLoop;20004		vDeltas.push_back(-1 * getResourceSiphoned(eResourceLoop));20005	}2000620007	// Add back in valid siphoned resources20008	for (int iPlayerLoop = 0; iPlayerLoop < MAX_PLAYERS; iPlayerLoop++)20009	{20010		PlayerTypes ePlayerLoop = (PlayerTypes) iPlayerLoop;20011		int iSiphonLuxuryCount = getSiphonLuxuryCount(ePlayerLoop);20012		if (iSiphonLuxuryCount > 0)20013		{20014			for (int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)20015			{20016				ResourceTypes eResourceLoop = (ResourceTypes) iResourceLoop;20017				CvResourceInfo* pInfo = GC.getResourceInfo(eResourceLoop);20018				// Is it a luxury?20019				if (pInfo && pInfo->getResourceUsage() == RESOURCEUSAGE_LUXURY)20020				{20021					// Do they have at least one of this type, even if it was exported?20022					if (GET_PLAYER(ePlayerLoop).getNumResourceTotal(eResourceLoop, /*bIncludeImport*/ false) > 0 || GET_PLAYER(ePlayerLoop).getResourceExport(eResourceLoop) > 0)20023					{20024						vDeltas[eResourceLoop] += iSiphonLuxuryCount;20025					}20026				}20027			}20028		}20029	}2003020031	// Propagate any actual changes20032	for (uint i = 0; i < vDeltas.size(); i++)20033	{20034		if (vDeltas[i] != 0)20035		{20036			ResourceTypes eResource = (ResourceTypes) i;20037			changeResourceSiphoned(eResource, vDeltas[i]);20038		}20039	}20040}

Calls

Called by