Bazaar developer reference

CvUnit::GetUpgradeUnitType() const

Defined in
CvUnit.cpp, line 11099
Class
CvUnit
Hook name
CivHooks::CvUnit_GetUpgradeUnitType
Lua events
GameEvents.CanHaveUpgrade, GameEvents.UnitCanHaveUpgrade

Hooks

static bool BeforeCvUnit_GetUpgradeUnitType(const CvUnit* self, UnitTypes& result);static void AfterCvUnit_GetUpgradeUnitType(const CvUnit* self, UnitTypes& result);static UnitTypes ReplaceCvUnit_GetUpgradeUnitType(UnitTypes (*original)(const CvUnit*), const CvUnit* self);CivRegisterBefore<CivHooks::CvUnit_GetUpgradeUnitType>(host, &BeforeCvUnit_GetUpgradeUnitType);CivRegisterAfter<CivHooks::CvUnit_GetUpgradeUnitType>(host, &AfterCvUnit_GetUpgradeUnitType);CivRegisterReplace<CivHooks::CvUnit_GetUpgradeUnitType>(host, &ReplaceCvUnit_GetUpgradeUnitType);

Code

11098/// What UnitType does this Unit upgrade into?11099UnitTypes CvUnit::GetUpgradeUnitType() const11100{11101	VALIDATE_OBJECT11102	UnitTypes eUpgradeUnitType = NO_UNIT;1110311104	CvCivilizationInfo& kCiv = GET_PLAYER(getOwner()).getCivilizationInfo();1110511106	// Determine what we're going to upgrade into11107	for(int iI = 0; iI < GC.getNumUnitClassInfos(); iI++)11108	{11109		const UnitClassTypes eUnitClass = static_cast<UnitClassTypes>(iI);11110		CvUnitClassInfo* pkUnitClassInfo = GC.getUnitClassInfo(eUnitClass);11111		if(pkUnitClassInfo)11112		{11113			if(m_pUnitInfo->GetUpgradeUnitClass(iI))11114			{11115				eUpgradeUnitType = (UnitTypes) kCiv.getCivilizationUnits(iI);1111611117#if defined(MOD_EVENTS_UNIT_UPGRADES)11118				if (MOD_EVENTS_UNIT_UPGRADES) {11119					if (GAMEEVENTINVOKE_TESTALL(GAMEEVENT_CanHaveUpgrade, getOwner(), GetID(), iI, eUpgradeUnitType) == GAMEEVENTRETURN_FALSE) {11120						continue;11121					}1112211123					if (GAMEEVENTINVOKE_TESTALL(GAMEEVENT_UnitCanHaveUpgrade, getOwner(), GetID(), iI, eUpgradeUnitType) == GAMEEVENTRETURN_FALSE) {11124						continue;11125					}11126				} else {11127#endif11128				ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();11129				if (pkScriptSystem) 11130				{11131					CvLuaArgsHandle args;11132					args->Push(((int)getOwner()));11133					args->Push(GetID());11134					args->Push(iI);11135					args->Push(eUpgradeUnitType);1113611137					bool bResult = false;11138					if (LuaSupport::CallTestAll(pkScriptSystem, "CanHaveUpgrade", args.get(), bResult)) 11139					{11140						if (bResult == false) 11141						{11142							continue;11143						}11144					}11145				}11146#if defined(MOD_EVENTS_UNIT_UPGRADES)11147				}11148#endif1114911150				break;11151			}11152		}11153	}1115411155	return eUpgradeUnitType;11156}

Calls

Called by