91 lines
2.7 KiB
Ucode
91 lines
2.7 KiB
Ucode
class ExtHUD_WeaponSelectWidget extends KFGFxHUD_WeaponSelectWidget;
|
|
|
|
var transient array< class<KFWeaponDefinition> > WeaponGroup;
|
|
|
|
simulated function UpdateWeaponGroupOnHUD(byte GroupIndex)
|
|
{
|
|
local Inventory Inv;
|
|
local KFWeapon KFW;
|
|
local byte i;
|
|
local int Index;
|
|
local array<KFWeapon> WeaponsList;
|
|
local KFGFxObject_TraderItems TraderItems;
|
|
local Pawn P;
|
|
local array< class<KFWeaponDefinition> > WPGroup;
|
|
|
|
P = GetPC().Pawn;
|
|
if (P == none || P.InvManager == none)
|
|
return;
|
|
|
|
for (Inv = P.InvManager.InventoryChain; Inv != none; Inv = Inv.Inventory)
|
|
{
|
|
KFW = KFWeapon(Inv);
|
|
if (KFW != none && KFW.InventoryGroup == GroupIndex)
|
|
WeaponsList.AddItem(KFW);
|
|
}
|
|
|
|
WPGroup.Length = WeaponsList.Length;
|
|
TraderItems = KFGameReplicationInfo(P.WorldInfo.GRI).TraderItems;
|
|
for (i = 0; i < WeaponsList.Length; i++)
|
|
{
|
|
Index = TraderItems.SaleItems.Find('ClassName', WeaponsList[i].Class.Name);
|
|
if (Index != -1)
|
|
WPGroup[i] = TraderItems.SaleItems[Index].WeaponDef;
|
|
}
|
|
|
|
WeaponGroup = WPGroup;
|
|
SetWeaponGroupList(WeaponsList, GroupIndex);
|
|
}
|
|
|
|
simulated function SetWeaponGroupList(out array<KFWeapon> WeaponList, byte GroupIndex)
|
|
{
|
|
local byte i;
|
|
local GFxObject DataProvider;
|
|
local GFxObject TempObj;
|
|
local bool bUsesAmmo;
|
|
|
|
DataProvider = CreateArray();
|
|
if (DataProvider == None)
|
|
return; // gfx has been shut down
|
|
|
|
for (i = 0; i < WeaponList.length; i++)
|
|
{
|
|
TempObj = CreateObject("Object");
|
|
|
|
if (WeaponGroup[i] != None)
|
|
{
|
|
TempObj.SetString("weaponName", WeaponGroup[i].static.GetItemLocalization("ItemName"));
|
|
TempObj.SetString("texturePath", "img://"$WeaponGroup[i].static.GetImagePath());
|
|
}
|
|
else
|
|
{
|
|
TempObj.SetString("weaponName", WeaponList[i].ItemName);
|
|
TempObj.SetString("texturePath", "img://"$PathName(WeaponList[i].WeaponSelectTexture));
|
|
}
|
|
|
|
TempObj.SetInt("weaponTier", WeaponList[i].CurrentWeaponUpgradeIndex);
|
|
TempObj.SetInt("ammoCount", WeaponList[i].AmmoCount[0]);
|
|
TempObj.SetInt("spareAmmoCount", WeaponList[i].SpareAmmoCount[0]);
|
|
//secondary ammo shenanigans
|
|
TempObj.SetBool("bUsesSecondaryAmmo", WeaponList[i].UsesSecondaryAmmo()&&WeaponList[i].bCanRefillSecondaryAmmo);
|
|
TempObj.SetBool("bEnabled", WeaponList[i].HasAnyAmmo());
|
|
if (WeaponList[i].UsesSecondaryAmmo() && WeaponList[i].bCanRefillSecondaryAmmo)
|
|
{
|
|
TempObj.SetBool("bCanRefillSecondaryAmmo", WeaponList[i].SpareAmmoCapacity[1] > 0);
|
|
TempObj.SetInt("secondaryAmmoCount", WeaponList[i].AmmoCount[1]);
|
|
TempObj.SetInt("secondarySpareAmmoCount", WeaponList[i].SpareAmmoCount[1]);
|
|
}
|
|
|
|
TempObj.SetBool("throwable", WeaponList[i].CanThrow());
|
|
|
|
bUsesAmmo = (WeaponList[i].static.UsesAmmo());
|
|
TempObj.SetBool("bUsesAmmo", bUsesAmmo);
|
|
DataProvider.SetElementObject(i, TempObj);
|
|
}
|
|
|
|
SetWeaponList(DataProvider, GroupIndex);
|
|
}
|
|
|
|
DefaultProperties
|
|
{
|
|
} |