Select upto three random options on level uop

This commit is contained in:
baz 2025-02-07 20:32:38 +00:00
parent 23d74eddfb
commit 78355d6bf4

View File

@ -36,11 +36,11 @@ void ULevelUpWidget::NativeConstruct()
return; return;
} }
TArray<AWeapon*> Inventory = InventoryComponent->GetInventory();
TArray<UUpgradeButtonDataObject*> upgradeItems;
UpgradesListView->ClearListItems(); UpgradesListView->ClearListItems();
TArray<AWeapon*> Inventory = InventoryComponent->GetInventory();
// Get list of weapons that the player owns that can be upgraded
TArray<UUpgradeButtonDataObject*> upgradeItems;
for (AWeapon* weapon : Inventory) for (AWeapon* weapon : Inventory)
{ {
if (weapon->CurrentLevel < weapon->Upgrades.Num()) if (weapon->CurrentLevel < weapon->Upgrades.Num())
@ -51,8 +51,8 @@ void ULevelUpWidget::NativeConstruct()
} }
} }
// Get list of weapons that the player can still obtain
TArray<TSubclassOf<AWeapon>> ObtainableWeapons = InventoryComponent->obtainableWeapons; TArray<TSubclassOf<AWeapon>> ObtainableWeapons = InventoryComponent->obtainableWeapons;
for (TSubclassOf<AWeapon> weapon : ObtainableWeapons) for (TSubclassOf<AWeapon> weapon : ObtainableWeapons)
{ {
UUpgradeButtonDataObject* Temp = NewObject<UUpgradeButtonDataObject>(this); UUpgradeButtonDataObject* Temp = NewObject<UUpgradeButtonDataObject>(this);
@ -60,6 +60,7 @@ void ULevelUpWidget::NativeConstruct()
upgradeItems.Add(Temp); upgradeItems.Add(Temp);
} }
// If no valid options exist, populate list with default options
if (upgradeItems.Num() == 0) if (upgradeItems.Num() == 0)
{ {
UUpgradeButtonDataObject* tempHealth = NewObject<UUpgradeButtonDataObject>(this); UUpgradeButtonDataObject* tempHealth = NewObject<UUpgradeButtonDataObject>(this);
@ -77,7 +78,13 @@ void ULevelUpWidget::NativeConstruct()
upgradeItems.Add(tempGold); upgradeItems.Add(tempGold);
} }
UpgradesListView->SetListItems(upgradeItems); // Select up to three random options from the list of options
for (int i = 0; i < 3 && upgradeItems.Num() > 0; i++)
{
int rand = FMath::RandRange(0, upgradeItems.Num() - 1);
UpgradesListView->AddItem(upgradeItems[rand]);
upgradeItems.RemoveAt(rand);
}
} }
SetIsFocusable(true); SetIsFocusable(true);
} }