// Fill out your copyright notice in the Description page of Project Settings. #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(); 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(GetGameInstance()); if (GameInstance) { TArray SelectableItemList = GameInstance->GetSelectableItemList(ItemCategory); for (auto SelectableItem : SelectableItemList) { UObjectsListUserWidget* ObjectsListUserWidget = CreateWidget(this, ObjectsListUserWidgetClass); if (ObjectsListUserWidget) { ObjectsListUserWidget->SelectableItemData = SelectableItem; GetWrapBox()->AddChild(ObjectsListUserWidget); } } } } } void UAllRandomUserWidget::DoOpen() { DoUpdateItemList(EItemCategory::Furniture); }