From 78355d6bf4c21373c1f0473359e6da2183e40349 Mon Sep 17 00:00:00 2001 From: baz Date: Fri, 7 Feb 2025 20:32:38 +0000 Subject: [PATCH] Select upto three random options on level uop --- Source/vampires/Widgets/LevelUpWidget.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Source/vampires/Widgets/LevelUpWidget.cpp b/Source/vampires/Widgets/LevelUpWidget.cpp index 0620825..fcf3f73 100644 --- a/Source/vampires/Widgets/LevelUpWidget.cpp +++ b/Source/vampires/Widgets/LevelUpWidget.cpp @@ -36,11 +36,11 @@ void ULevelUpWidget::NativeConstruct() return; } - TArray Inventory = InventoryComponent->GetInventory(); - TArray upgradeItems; - UpgradesListView->ClearListItems(); + TArray Inventory = InventoryComponent->GetInventory(); + // Get list of weapons that the player owns that can be upgraded + TArray upgradeItems; for (AWeapon* weapon : Inventory) { if (weapon->CurrentLevel < weapon->Upgrades.Num()) @@ -51,15 +51,16 @@ void ULevelUpWidget::NativeConstruct() } } + // Get list of weapons that the player can still obtain TArray> ObtainableWeapons = InventoryComponent->obtainableWeapons; - for (TSubclassOf weapon : ObtainableWeapons) { UUpgradeButtonDataObject* Temp = NewObject(this); Temp->SetData(weapon, this); upgradeItems.Add(Temp); } - + + // If no valid options exist, populate list with default options if (upgradeItems.Num() == 0) { UUpgradeButtonDataObject* tempHealth = NewObject(this); @@ -77,7 +78,13 @@ void ULevelUpWidget::NativeConstruct() 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); }