// Fill out your copyright notice in the Description page of Project Settings. #include "UI/Settings/CaptureSettingsUserWidget.h" #include "Core/LuckyRobotsGameInstance.h" #include "UI/GameUserWidget.h" #include "UI/Settings/AllRandomUserWidget.h" #include "UI/Settings/TaskListViewUserWidget.h" #include "Components/ListView.h" #include "Object/ListviewObject.h" #include "Subsystem/UISubsystem.h" void UCaptureSettingsUserWidget::NativeConstruct() { Super::NativeConstruct(); SetVisibility(ESlateVisibility::Hidden); BPRefreshTaskList(); ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); if (GameInstance) { GameInstance->OnRandomMeshesUpdated.AddDynamic(this, &UCaptureSettingsUserWidget::BPOnRandomMeshesUpdated); } } void UCaptureSettingsUserWidget::OnAnimationFinished(const UWidgetAnimation* Animation) { Super::OnAnimationFinished(Animation); if (CheckIsStopAnim(Animation)) { auto UISubsystem = GetGameInstance()->GetSubsystem(); if (UISubsystem) { UISubsystem->OnOpenMenuStateChanged.Broadcast(bIsOpen); } } } void UCaptureSettingsUserWidget::ToggleMenu() { bIsOpen = !bIsOpen; if (bIsOpen) { BPLoadSettings(); } else { ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); if (GameInstance && GameInstance->GameUserWidget) { GameInstance->GameUserWidget->DoAutoConfirm(); } } auto UISubsystem = GetGameInstance()->GetSubsystem(); if (UISubsystem) { UISubsystem->OnOpenMenuStateChanged.Broadcast(bIsOpen); } ToggleMenuDisplay(); } void UCaptureSettingsUserWidget::DoStopCapture() { ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); if (GameInstance) { GameInstance->bIsMouseOpen = false; } auto UISubsystem = GetGameInstance()->GetSubsystem(); if (UISubsystem) { UISubsystem->OnStopCapture.Broadcast(); } } void UCaptureSettingsUserWidget::ToggleRandomPannel() { ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); if (GameInstance) { auto UISubsystem = GetGameInstance()->GetSubsystem(); if (UISubsystem) { UISubsystem->OnAllRandomMenuStateChanged.Broadcast(!GameInstance->bIsRandomPannel); } } } void UCaptureSettingsUserWidget::BPRefreshTaskList() { UTaskListViewUserWidget* TaskListViewUserWidget = GetTaskListViewUserWidget(); UListView* TaskListView = nullptr; if (TaskListViewUserWidget) { TaskListView = TaskListViewUserWidget->GetTaskListView(); } if (TaskListViewUserWidget && TaskListView) { TaskListView->ClearListItems(); } ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); if (GameInstance) { TArray TaskList = GameInstance->GetTaskList(); int index = 0; for (auto task : TaskList) { UListviewObject* ListviewObject = NewObject(); if (ListviewObject) { ListviewObject->GoalsTaskData = task; ++index; ListviewObject->Index = index; if (TaskListViewUserWidget && TaskListView) { TaskListView->AddItem(ListviewObject); } } } GameInstance->UpdateTargetSelector(); } }