class ExtHUD_WeaponSelectWidget extends KFGFxHUD_WeaponSelectWidget; var transient array< class > WeaponGroup; simulated function UpdateWeaponGroupOnHUD(byte GroupIndex) { local Inventory Inv; local KFWeapon KFW; local byte i; local int Index; local array WeaponsList; local KFGFxObject_TraderItems TraderItems; local Pawn P; local array< class > 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 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 { }