You've already forked LuckyWorld
Optimize some UI
This commit is contained in:
@ -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);
|
||||
}
|
Reference in New Issue
Block a user