diff --git a/Content/Blueprint/Core/BP_NaviSplineCreator.uasset b/Content/Blueprint/Core/BP_NaviSplineCreator.uasset index 83104b11..109bbe7d 100644 Binary files a/Content/Blueprint/Core/BP_NaviSplineCreator.uasset and b/Content/Blueprint/Core/BP_NaviSplineCreator.uasset differ diff --git a/Content/GameBP/Core/BP_LuckyRobotsGameInstance.uasset b/Content/GameBP/Core/BP_LuckyRobotsGameInstance.uasset index 704563e2..b4747580 100644 Binary files a/Content/GameBP/Core/BP_LuckyRobotsGameInstance.uasset and b/Content/GameBP/Core/BP_LuckyRobotsGameInstance.uasset differ diff --git a/Content/GameBP/UI/Settings/WB_CaptureSettings.uasset b/Content/GameBP/UI/Settings/WB_CaptureSettings.uasset index 77998aff..14c6fb86 100644 Binary files a/Content/GameBP/UI/Settings/WB_CaptureSettings.uasset and b/Content/GameBP/UI/Settings/WB_CaptureSettings.uasset differ diff --git a/Content/GameBP/UI/WB_GameWidget.uasset b/Content/GameBP/UI/WB_GameWidget.uasset index aa3f90c8..882fb92e 100644 Binary files a/Content/GameBP/UI/WB_GameWidget.uasset and b/Content/GameBP/UI/WB_GameWidget.uasset differ diff --git a/Content/luckyBot/Luckywidget/ChildItems/BP_listviewObject.uasset b/Content/luckyBot/Luckywidget/ChildItems/BP_listviewObject.uasset deleted file mode 100644 index fc95046f..00000000 Binary files a/Content/luckyBot/Luckywidget/ChildItems/BP_listviewObject.uasset and /dev/null differ diff --git a/Content/luckyBot/Luckywidget/ChildItems/WB_ObjectsListBox.uasset b/Content/luckyBot/Luckywidget/ChildItems/WB_ObjectsListBox.uasset index 0fd6e25e..80ebc9bc 100644 Binary files a/Content/luckyBot/Luckywidget/ChildItems/WB_ObjectsListBox.uasset and b/Content/luckyBot/Luckywidget/ChildItems/WB_ObjectsListBox.uasset differ diff --git a/Content/luckyBot/Luckywidget/ChildItems/WB_TaskListBox.uasset b/Content/luckyBot/Luckywidget/ChildItems/WB_TaskListBox.uasset index c622d309..861354d8 100644 Binary files a/Content/luckyBot/Luckywidget/ChildItems/WB_TaskListBox.uasset and b/Content/luckyBot/Luckywidget/ChildItems/WB_TaskListBox.uasset differ diff --git a/Content/luckyBot/Luckywidget/menu/WB_AllRandom.uasset b/Content/luckyBot/Luckywidget/menu/WB_AllRandom.uasset index 575cca0f..ebd1eb8d 100644 Binary files a/Content/luckyBot/Luckywidget/menu/WB_AllRandom.uasset and b/Content/luckyBot/Luckywidget/menu/WB_AllRandom.uasset differ diff --git a/Content/luckyBot/Luckywidget/menu/WB_ListViewTaskPeopleObject.uasset b/Content/luckyBot/Luckywidget/menu/WB_ListViewTaskPeopleObject.uasset index ef005221..bf8f21bc 100644 Binary files a/Content/luckyBot/Luckywidget/menu/WB_ListViewTaskPeopleObject.uasset and b/Content/luckyBot/Luckywidget/menu/WB_ListViewTaskPeopleObject.uasset differ diff --git a/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset b/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset index 237ebcba..36d77c53 100644 Binary files a/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset and b/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset differ diff --git a/LuckyWorldV2.uproject b/LuckyWorldV2.uproject index 6dfdb7cc..126190b6 100644 --- a/LuckyWorldV2.uproject +++ b/LuckyWorldV2.uproject @@ -10,7 +10,8 @@ "LoadingPhase": "Default", "AdditionalDependencies": [ "Engine", - "UMG" + "UMG", + "CoreUObject" ] } ], diff --git a/Source/LuckyWorldV2/Private/Core/LuckyRobotsGameInstance.cpp b/Source/LuckyWorldV2/Private/Core/LuckyRobotsGameInstance.cpp index c839810d..7d9f527b 100644 --- a/Source/LuckyWorldV2/Private/Core/LuckyRobotsGameInstance.cpp +++ b/Source/LuckyWorldV2/Private/Core/LuckyRobotsGameInstance.cpp @@ -12,6 +12,7 @@ #include "VaRestSubsystem.h" #include "Subsystems/SubsystemBlueprintLibrary.h" #include "Gameplay/TargetSelector.h" +#include "UI/Settings/CaptureSettingsUserWidget.h" void ULuckyRobotsGameInstance::DoSendMessage(const FString& SendValue) { @@ -135,7 +136,10 @@ void ULuckyRobotsGameInstance::DoSetTempTaskValueChange(bool bIsClear) if (GameUserWidget) { - GameUserWidget->DoRefreshListView(); + if (GameUserWidget->GetCaptureSettingsUserWidget()) + { + GameUserWidget->GetCaptureSettingsUserWidget()->BPRefreshTaskList(); + } } } diff --git a/Source/LuckyWorldV2/Private/Gameplay/NaviSplineCreator.cpp b/Source/LuckyWorldV2/Private/Gameplay/NaviSplineCreator.cpp new file mode 100644 index 00000000..3344077f --- /dev/null +++ b/Source/LuckyWorldV2/Private/Gameplay/NaviSplineCreator.cpp @@ -0,0 +1,36 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Gameplay/NaviSplineCreator.h" +#include "Core/LuckyRobotsGameInstance.h" + +// Sets default values +ANaviSplineCreator::ANaviSplineCreator() +{ + // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + +} + +// Called when the game starts or when spawned +void ANaviSplineCreator::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void ANaviSplineCreator::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +void ANaviSplineCreator::UpdateSplineVisibility() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + SetActorHiddenInGame(!GameInstance->bIsShowPath); + } +} \ No newline at end of file diff --git a/Source/LuckyWorldV2/Private/Object/ListviewObject.cpp b/Source/LuckyWorldV2/Private/Object/ListviewObject.cpp new file mode 100644 index 00000000..a9c660b3 --- /dev/null +++ b/Source/LuckyWorldV2/Private/Object/ListviewObject.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Object/ListviewObject.h" + diff --git a/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp index f732c390..d2a2806b 100644 --- a/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp +++ b/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp @@ -3,6 +3,10 @@ #include "UI/GameUserWidget.h" #include "Core/LuckyRobotsGameInstance.h" +#include "UI/Settings/CaptureSettingsUserWidget.h" +#include "UI/Settings/SelectGoalUserWidget.h" +#include "Kismet/GameplayStatics.h" +#include "Gameplay/NaviSplineCreator.h" void UGameUserWidget::NativeConstruct() { @@ -48,4 +52,105 @@ void UGameUserWidget::UpdateDownCount() } GetWorld()->GetTimerManager().ClearTimer(UpdateDownCountTimerHandle); } +} + +void UGameUserWidget::ToggleHide() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + GameInstance->bIsDebug = !GameInstance->bIsDebug; + } +} + +void UGameUserWidget::ToggleTestMode() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + GameInstance->bIsWidgetTestMode = !GameInstance->bIsWidgetTestMode; + } +} + +void UGameUserWidget::DoCapture() +{ + if (GetCaptureSettingsUserWidget()) + { + GetCaptureSettingsUserWidget()->ToggleMenu(); + } +} + +void UGameUserWidget::DoAutoConfirm() +{ + USelectGoalUserWidget* SelectGoalUserWidget = GetSelectGoalUserWidget(); + if (SelectGoalUserWidget) + { + SelectGoalUserWidget->DoAutoConfirm(); + } +} + +void UGameUserWidget::DoReset() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + if (GameInstance->bIsCapture) + { + if (GetCaptureSettingsUserWidget()) + { + GetCaptureSettingsUserWidget()->BPChangeCaptureState(); + } + } + } + + OnReset.Broadcast(); +} + +void UGameUserWidget::DoExit() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + if (GameInstance->bIsCapture) + { + if (GetCaptureSettingsUserWidget()) + { + GetCaptureSettingsUserWidget()->BPChangeCaptureState(); + } + } + + if (GameInstance->LobbyLevelObject) + { + UGameplayStatics::OpenLevelBySoftObjectPtr(this, GameInstance->LobbyLevelObject); + } + } +} + +void UGameUserWidget::SwitchGamePaused() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + GameInstance->SwitchGamePaused(); + } +} + +void UGameUserWidget::ToggleShowPath() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + GameInstance->bIsShowPath = !GameInstance->bIsShowPath; + } + + TArray AllNaviSplineCreator; + UGameplayStatics::GetAllActorsOfClass(this, ANaviSplineCreator::StaticClass(), AllNaviSplineCreator); + for (auto NaviSplineCreatorActor : AllNaviSplineCreator) + { + ANaviSplineCreator* NaviSplineCreator = Cast(NaviSplineCreatorActor); + if (NaviSplineCreator) + { + NaviSplineCreator->UpdateSplineVisibility(); + } + } } \ No newline at end of file diff --git a/Source/LuckyWorldV2/Private/UI/Settings/AllRandomUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/Settings/AllRandomUserWidget.cpp new file mode 100644 index 00000000..468c72a6 --- /dev/null +++ b/Source/LuckyWorldV2/Private/UI/Settings/AllRandomUserWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Settings/AllRandomUserWidget.h" + diff --git a/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp index a6d4e302..74ec0380 100644 --- a/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp +++ b/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp @@ -4,6 +4,10 @@ #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" void UCaptureSettingsUserWidget::NativeConstruct() { @@ -19,6 +23,16 @@ void UCaptureSettingsUserWidget::NativeConstruct() } } +void UCaptureSettingsUserWidget::OnAnimationFinished(const UWidgetAnimation* Animation) +{ + Super::OnAnimationFinished(Animation); + + if (CheckIsStopAnim(Animation)) + { + OnOpenMenuStateChanged.Broadcast(bIsOpen); + } +} + void UCaptureSettingsUserWidget::ToggleMenu() { bIsOpen = !bIsOpen; @@ -39,4 +53,71 @@ void UCaptureSettingsUserWidget::ToggleMenu() OnOpenMenuStateChanged.Broadcast(bIsOpen); ToggleMenuDisplay(); +} + +void UCaptureSettingsUserWidget::DoStopCapture() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + GameInstance->bIsMouseOpen = false; + } + + OnStopCapture.Broadcast(); +} + +void UCaptureSettingsUserWidget::ToggleRandomPannel() +{ + ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); + if (GameInstance) + { + GameInstance->bIsRandomPannel = !GameInstance->bIsRandomPannel; + if (GameInstance->bIsRandomPannel) + { + if (GameInstance->GameUserWidget && GameInstance->GameUserWidget->GetAllRandomUserWidget()) + { + GameInstance->GameUserWidget->GetAllRandomUserWidget()->DoOpen(); + } + } + } +} + +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(); + } + + } \ No newline at end of file diff --git a/Source/LuckyWorldV2/Private/UI/Settings/SelectGoalUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/Settings/SelectGoalUserWidget.cpp new file mode 100644 index 00000000..405a6645 --- /dev/null +++ b/Source/LuckyWorldV2/Private/UI/Settings/SelectGoalUserWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Settings/SelectGoalUserWidget.h" + diff --git a/Source/LuckyWorldV2/Private/UI/Settings/TaskListViewUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/Settings/TaskListViewUserWidget.cpp new file mode 100644 index 00000000..71f21a85 --- /dev/null +++ b/Source/LuckyWorldV2/Private/UI/Settings/TaskListViewUserWidget.cpp @@ -0,0 +1,4 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Settings/TaskListViewUserWidget.h" diff --git a/Source/LuckyWorldV2/Public/Core/LuckyRobotsGameInstance.h b/Source/LuckyWorldV2/Public/Core/LuckyRobotsGameInstance.h index fa293b93..5c1b62cd 100644 --- a/Source/LuckyWorldV2/Public/Core/LuckyRobotsGameInstance.h +++ b/Source/LuckyWorldV2/Public/Core/LuckyRobotsGameInstance.h @@ -45,6 +45,9 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") TSubclassOf TargetSelectorClass; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") + TSoftObjectPtr LobbyLevelObject; + public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") TArray AlphabetForRandomList; diff --git a/Source/LuckyWorldV2/Public/Gameplay/NaviSplineCreator.h b/Source/LuckyWorldV2/Public/Gameplay/NaviSplineCreator.h new file mode 100644 index 00000000..954bb932 --- /dev/null +++ b/Source/LuckyWorldV2/Public/Gameplay/NaviSplineCreator.h @@ -0,0 +1,29 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "NaviSplineCreator.generated.h" + +UCLASS() +class LUCKYWORLDV2_API ANaviSplineCreator : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + ANaviSplineCreator(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + +public: + UFUNCTION(BlueprintCallable) + void UpdateSplineVisibility(); +}; diff --git a/Source/LuckyWorldV2/Public/Object/ListviewObject.h b/Source/LuckyWorldV2/Public/Object/ListviewObject.h new file mode 100644 index 00000000..0ea6a817 --- /dev/null +++ b/Source/LuckyWorldV2/Public/Object/ListviewObject.h @@ -0,0 +1,24 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/NoExportTypes.h" +#include "SharedDef.h" +#include "ListviewObject.generated.h" + +/** + * + */ +UCLASS(Blueprintable) +class LUCKYWORLDV2_API UListviewObject : public UObject +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FGoalsTaskData GoalsTaskData; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + int32 Index; +}; diff --git a/Source/LuckyWorldV2/Public/UI/GameUserWidget.h b/Source/LuckyWorldV2/Public/UI/GameUserWidget.h index 78630da2..759268fe 100644 --- a/Source/LuckyWorldV2/Public/UI/GameUserWidget.h +++ b/Source/LuckyWorldV2/Public/UI/GameUserWidget.h @@ -10,6 +10,8 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnReset); class UCaptureSettingsUserWidget; +class USelectGoalUserWidget; +class UAllRandomUserWidget; /** * */ @@ -48,17 +50,41 @@ public: UFUNCTION(BlueprintCallable) void DoWaitSecond(); + UFUNCTION(BlueprintCallable) + void ToggleHide(); + + UFUNCTION(BlueprintCallable) + void ToggleTestMode(); + + UFUNCTION(BlueprintCallable) + void DoCapture(); + + UFUNCTION(BlueprintCallable) + void DoAutoConfirm(); + + UFUNCTION(BlueprintCallable) + void DoReset(); + + UFUNCTION(BlueprintCallable) + void DoExit(); + + UFUNCTION(BlueprintCallable) + void SwitchGamePaused(); + + UFUNCTION(BlueprintCallable) + void ToggleShowPath(); + void UpdateDownCount(); public: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void DoLogItemAdd(const FString& Topic, const FString& MsgText, ELogItemType LogItemType); - UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) - void DoRefreshListView(); - - UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) - void DoAutoConfirm(); - UFUNCTION(BlueprintPure, BlueprintImplementableEvent) UCaptureSettingsUserWidget* GetCaptureSettingsUserWidget(); + + UFUNCTION(BlueprintPure, BlueprintImplementableEvent) + USelectGoalUserWidget* GetSelectGoalUserWidget(); + + UFUNCTION(BlueprintPure, BlueprintImplementableEvent) + UAllRandomUserWidget* GetAllRandomUserWidget(); }; diff --git a/Source/LuckyWorldV2/Public/UI/Settings/AllRandomUserWidget.h b/Source/LuckyWorldV2/Public/UI/Settings/AllRandomUserWidget.h new file mode 100644 index 00000000..1eab1417 --- /dev/null +++ b/Source/LuckyWorldV2/Public/UI/Settings/AllRandomUserWidget.h @@ -0,0 +1,20 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "AllRandomUserWidget.generated.h" + +/** + * + */ +UCLASS() +class LUCKYWORLDV2_API UAllRandomUserWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) + void DoOpen(); +}; diff --git a/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h b/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h index 59e8b2d9..ed1809c0 100644 --- a/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h +++ b/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h @@ -11,6 +11,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnOpenMenuStateChanged, bool, Open) DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStartCapture); DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStopCapture); +class UTaskListViewUserWidget; /** * */ @@ -20,6 +21,7 @@ class LUCKYWORLDV2_API UCaptureSettingsUserWidget : public UUserWidget GENERATED_BODY() protected: virtual void NativeConstruct() override; + void OnAnimationFinished(const UWidgetAnimation* Animation); public: UPROPERTY(EditAnywhere, BlueprintReadWrite) @@ -38,10 +40,17 @@ public: UFUNCTION(BlueprintCallable) void ToggleMenu(); -public: - UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) + UFUNCTION(BlueprintCallable) + void DoStopCapture(); + + UFUNCTION(BlueprintCallable) + void ToggleRandomPannel(); + + UFUNCTION(BlueprintCallable) void BPRefreshTaskList(); +public: + UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void BPOnRandomMeshesUpdated(); @@ -56,4 +65,10 @@ public: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void BPChangeCaptureState(); + + UFUNCTION(BlueprintPure, BlueprintImplementableEvent) + bool CheckIsStopAnim(const UWidgetAnimation* Animation); + + UFUNCTION(BlueprintPure, BlueprintImplementableEvent) + UTaskListViewUserWidget* GetTaskListViewUserWidget(); }; diff --git a/Source/LuckyWorldV2/Public/UI/Settings/SelectGoalUserWidget.h b/Source/LuckyWorldV2/Public/UI/Settings/SelectGoalUserWidget.h new file mode 100644 index 00000000..bb92685e --- /dev/null +++ b/Source/LuckyWorldV2/Public/UI/Settings/SelectGoalUserWidget.h @@ -0,0 +1,20 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "SelectGoalUserWidget.generated.h" + +/** + * + */ +UCLASS() +class LUCKYWORLDV2_API USelectGoalUserWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) + void DoAutoConfirm(); +}; diff --git a/Source/LuckyWorldV2/Public/UI/Settings/TaskListViewUserWidget.h b/Source/LuckyWorldV2/Public/UI/Settings/TaskListViewUserWidget.h new file mode 100644 index 00000000..88b40e43 --- /dev/null +++ b/Source/LuckyWorldV2/Public/UI/Settings/TaskListViewUserWidget.h @@ -0,0 +1,21 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "TaskListViewUserWidget.generated.h" + +class UListView; +/** + * + */ +UCLASS() +class LUCKYWORLDV2_API UTaskListViewUserWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintPure, BlueprintImplementableEvent) + UListView* GetTaskListView(); +};