Optimize some UI

This commit is contained in:
martinluckyrobots
2025-04-17 23:30:37 +08:00
parent 6198dc374e
commit 3f5bc9e1b1
15 changed files with 210 additions and 11 deletions

View File

@ -2,4 +2,63 @@
#include "UI/Settings/AllRandomUserWidget.h"
#include "Subsystem/UISubsystem.h"
#include "Components/WrapBox.h"
#include "Core/LuckyRobotsGameInstance.h"
#include "UI/Settings/ObjectsListUserWidget.h"
void UAllRandomUserWidget::NativeConstruct()
{
Super::NativeConstruct();
SetVisibility(ESlateVisibility::Hidden);
auto UISubsystem = GetGameInstance()->GetSubsystem<UUISubsystem>();
if (UISubsystem)
{
UISubsystem->OnAllRandomMenuStateChanged.AddDynamic(this, &UAllRandomUserWidget::DoAllRandomMenuStateChanged);
}
DoUpdateItemList(EItemCategory::Furniture);
}
void UAllRandomUserWidget::DoAllRandomMenuStateChanged(bool open)
{
if (open)
{
DoOpen();
SetVisibility(ESlateVisibility::Visible);
}
else
{
SetVisibility(ESlateVisibility::Hidden);
}
}
void UAllRandomUserWidget::DoUpdateItemList(EItemCategory ItemCategory)
{
if (GetWrapBox() && ObjectsListUserWidgetClass)
{
GetWrapBox()->ClearChildren();
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
TArray<FSelectableItemData> SelectableItemList = GameInstance->GetSelectableItemList(ItemCategory);
for (auto SelectableItem : SelectableItemList)
{
UObjectsListUserWidget* ObjectsListUserWidget = CreateWidget<UObjectsListUserWidget>(this, ObjectsListUserWidgetClass);
if (ObjectsListUserWidget)
{
ObjectsListUserWidget->SelectableItemData = SelectableItem;
GetWrapBox()->AddChild(ObjectsListUserWidget);
}
}
}
}
}
void UAllRandomUserWidget::DoOpen()
{
DoUpdateItemList(EItemCategory::Furniture);
}