Bazaar developer reference

CvPlayer::changeUnitClassMaking(UnitClassTypes, int)

Defined in
CvPlayer.cpp, line 20494
Class
CvPlayer
Hook name
CivHooks::CvPlayer_changeUnitClassMaking

Hooks

static bool BeforeCvPlayer_changeUnitClassMaking(CvPlayer* self, UnitClassTypes eIndex, int iChange);static void AfterCvPlayer_changeUnitClassMaking(CvPlayer* self, UnitClassTypes eIndex, int iChange);static void ReplaceCvPlayer_changeUnitClassMaking(void (*original)(CvPlayer*, UnitClassTypes, int), CvPlayer* self, UnitClassTypes eIndex, int iChange);CivRegisterBefore<CivHooks::CvPlayer_changeUnitClassMaking>(host, &BeforeCvPlayer_changeUnitClassMaking);CivRegisterAfter<CivHooks::CvPlayer_changeUnitClassMaking>(host, &AfterCvPlayer_changeUnitClassMaking);CivRegisterReplace<CivHooks::CvPlayer_changeUnitClassMaking>(host, &ReplaceCvPlayer_changeUnitClassMaking);

Code

20494void CvPlayer::changeUnitClassMaking(UnitClassTypes eIndex, int iChange)20495{20496	CvAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");20497	CvAssertMsg(eIndex < GC.getNumUnitClassInfos(), "eIndex is expected to be within maximum bounds (invalid Index)");2049820499	if(iChange != 0)20500	{20501		m_paiUnitClassMaking.setAt(eIndex, m_paiUnitClassMaking[eIndex] + iChange);20502		CvAssert(getUnitClassMaking(eIndex) >= 0);2050320504		CvCivilizationInfo& playerCivilizationInfo = getCivilizationInfo();20505		UnitTypes eUnit = static_cast<UnitTypes>(playerCivilizationInfo.getCivilizationUnits(eIndex));20506		CvUnitEntry* pkUnitInfo = GC.getUnitInfo(eUnit);20507		if(pkUnitInfo)20508		{20509			// Builder Limit20510			if(pkUnitInfo->GetWorkRate() > 0 && pkUnitInfo->GetDomainType() == DOMAIN_LAND)20511			{20512				ChangeNumBuilders(iChange);20513			}2051420515			// Update the amount of a Resource used up by Units in Production20516			for(int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)20517			{20518				ResourceTypes eResource = static_cast<ResourceTypes>(iResourceLoop);20519				CvResourceInfo* pkResource = GC.getResourceInfo(eResource);20520				if(pkResource)20521				{20522					if(pkUnitInfo->GetResourceQuantityRequirement(iResourceLoop) > 0)20523					{20524						changeNumResourceUsed(eResource, iChange * pkUnitInfo->GetResourceQuantityRequirement(iResourceLoop));20525					}20526				}20527			}2052820529			if(GetID() == GC.getGame().getActivePlayer())20530			{20531				GC.GetEngineUserInterface()->setDirty(Help_DIRTY_BIT, true);20532			}20533		}20534	}20535}

Calls

Called by