diff --git a/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset b/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset index 52390557..00c74d4a 100644 Binary files a/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset and b/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset differ diff --git a/Content/GameBP/UI/Settings/WB_CaptureSettings.uasset b/Content/GameBP/UI/Settings/WB_CaptureSettings.uasset index 14c6fb86..1897b885 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 882fb92e..5811fc84 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/WB_NavigateSimpleEnvironments.uasset b/Content/luckyBot/Luckywidget/ChildItems/WB_NavigateSimpleEnvironments.uasset index 59c9216e..e82920a1 100644 Binary files a/Content/luckyBot/Luckywidget/ChildItems/WB_NavigateSimpleEnvironments.uasset and b/Content/luckyBot/Luckywidget/ChildItems/WB_NavigateSimpleEnvironments.uasset differ diff --git a/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset b/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset index 36d77c53..77b8f2d9 100644 Binary files a/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset and b/Content/luckyBot/Luckywidget/menu/WB_SelectGoalMenu.uasset differ diff --git a/Source/LuckyWorldV2/Private/Subsystem/UISubsystem.cpp b/Source/LuckyWorldV2/Private/Subsystem/UISubsystem.cpp new file mode 100644 index 00000000..36384ebc --- /dev/null +++ b/Source/LuckyWorldV2/Private/Subsystem/UISubsystem.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Subsystem/UISubsystem.h" + diff --git a/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp index d2a2806b..c077d0d8 100644 --- a/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp +++ b/Source/LuckyWorldV2/Private/UI/GameUserWidget.cpp @@ -7,6 +7,7 @@ #include "UI/Settings/SelectGoalUserWidget.h" #include "Kismet/GameplayStatics.h" #include "Gameplay/NaviSplineCreator.h" +#include "Subsystem/UISubsystem.h" void UGameUserWidget::NativeConstruct() { @@ -17,6 +18,13 @@ void UGameUserWidget::NativeConstruct() { GameInstance->GameUserWidget = this; } + + auto UISubsystem = GetGameInstance()->GetSubsystem(); + if (UISubsystem) + { + UISubsystem->OnStartTracing.AddDynamic(this, &UGameUserWidget::OnStartTracing); + UISubsystem->OnEndTracing.AddDynamic(this, &UGameUserWidget::OnEndTracing); + } } void UGameUserWidget::DoWaitSecond() @@ -54,6 +62,23 @@ void UGameUserWidget::UpdateDownCount() } } +void UGameUserWidget::OnStartTracing() +{ + bIsTracing = true; +} + +void UGameUserWidget::OnEndTracing() +{ + bIsTracing = false; + + BPPlayShowTipAnimation(); + + if (GetCaptureSettingsUserWidget()) + { + GetCaptureSettingsUserWidget()->BPSaveSettings(); + } +} + void UGameUserWidget::ToggleHide() { ULuckyRobotsGameInstance* GameInstance = Cast(GetGameInstance()); @@ -103,7 +128,11 @@ void UGameUserWidget::DoReset() } } - OnReset.Broadcast(); + auto UISubsystem = GetGameInstance()->GetSubsystem(); + if (UISubsystem) + { + UISubsystem->OnReset.Broadcast(); + } } void UGameUserWidget::DoExit() diff --git a/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp index 74ec0380..7eee5892 100644 --- a/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp +++ b/Source/LuckyWorldV2/Private/UI/Settings/CaptureSettingsUserWidget.cpp @@ -8,6 +8,7 @@ #include "UI/Settings/TaskListViewUserWidget.h" #include "Components/ListView.h" #include "Object/ListviewObject.h" +#include "Subsystem/UISubsystem.h" void UCaptureSettingsUserWidget::NativeConstruct() { @@ -29,7 +30,11 @@ void UCaptureSettingsUserWidget::OnAnimationFinished(const UWidgetAnimation* Ani if (CheckIsStopAnim(Animation)) { - OnOpenMenuStateChanged.Broadcast(bIsOpen); + auto UISubsystem = GetGameInstance()->GetSubsystem(); + if (UISubsystem) + { + UISubsystem->OnOpenMenuStateChanged.Broadcast(bIsOpen); + } } } @@ -50,7 +55,11 @@ void UCaptureSettingsUserWidget::ToggleMenu() } } - OnOpenMenuStateChanged.Broadcast(bIsOpen); + auto UISubsystem = GetGameInstance()->GetSubsystem(); + if (UISubsystem) + { + UISubsystem->OnOpenMenuStateChanged.Broadcast(bIsOpen); + } ToggleMenuDisplay(); } @@ -63,7 +72,11 @@ void UCaptureSettingsUserWidget::DoStopCapture() GameInstance->bIsMouseOpen = false; } - OnStopCapture.Broadcast(); + auto UISubsystem = GetGameInstance()->GetSubsystem(); + if (UISubsystem) + { + UISubsystem->OnStopCapture.Broadcast(); + } } void UCaptureSettingsUserWidget::ToggleRandomPannel() diff --git a/Source/LuckyWorldV2/Private/UI/Settings/PathfindingSelectorUserWidget.cpp b/Source/LuckyWorldV2/Private/UI/Settings/PathfindingSelectorUserWidget.cpp new file mode 100644 index 00000000..262d7ba8 --- /dev/null +++ b/Source/LuckyWorldV2/Private/UI/Settings/PathfindingSelectorUserWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Settings/PathfindingSelectorUserWidget.h" + diff --git a/Source/LuckyWorldV2/Public/Subsystem/UISubsystem.h b/Source/LuckyWorldV2/Public/Subsystem/UISubsystem.h new file mode 100644 index 00000000..0a535378 --- /dev/null +++ b/Source/LuckyWorldV2/Public/Subsystem/UISubsystem.h @@ -0,0 +1,43 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Subsystems/GameInstanceSubsystem.h" +#include "UISubsystem.generated.h" + + +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStartTracing); +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnEndTracing); +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStartCapture); +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStopCapture); +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnReset); + +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnOpenMenuStateChanged, bool, Open); +/** + * + */ +UCLASS() +class LUCKYWORLDV2_API UUISubsystem : public UGameInstanceSubsystem +{ + GENERATED_BODY() + +public: + UPROPERTY(BlueprintCallable, BlueprintAssignable) + FOnStartTracing OnStartTracing; + + UPROPERTY(BlueprintCallable, BlueprintAssignable) + FOnEndTracing OnEndTracing; + + UPROPERTY(BlueprintCallable, BlueprintAssignable) + FOnStartCapture OnStartCapture; + + UPROPERTY(BlueprintCallable, BlueprintAssignable) + FOnStopCapture OnStopCapture; + + UPROPERTY(BlueprintCallable, BlueprintAssignable) + FOnReset OnReset; + + UPROPERTY(BlueprintCallable, BlueprintAssignable) + FOnOpenMenuStateChanged OnOpenMenuStateChanged; +}; diff --git a/Source/LuckyWorldV2/Public/UI/GameUserWidget.h b/Source/LuckyWorldV2/Public/UI/GameUserWidget.h index 759268fe..b322f5d0 100644 --- a/Source/LuckyWorldV2/Public/UI/GameUserWidget.h +++ b/Source/LuckyWorldV2/Public/UI/GameUserWidget.h @@ -7,8 +7,6 @@ #include "SharedDef.h" #include "GameUserWidget.generated.h" -DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnReset); - class UCaptureSettingsUserWidget; class USelectGoalUserWidget; class UAllRandomUserWidget; @@ -42,10 +40,6 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite) FString DownCountStr; -public: - UPROPERTY(BlueprintCallable, BlueprintAssignable, Category = "Event") - FOnReset OnReset; - public: UFUNCTION(BlueprintCallable) void DoWaitSecond(); @@ -75,6 +69,10 @@ public: void ToggleShowPath(); void UpdateDownCount(); + + void OnStartTracing(); + void OnEndTracing(); + public: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void DoLogItemAdd(const FString& Topic, const FString& MsgText, ELogItemType LogItemType); @@ -87,4 +85,7 @@ public: UFUNCTION(BlueprintPure, BlueprintImplementableEvent) UAllRandomUserWidget* GetAllRandomUserWidget(); + + UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) + void BPPlayShowTipAnimation(); }; diff --git a/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h b/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h index ed1809c0..8950d1f2 100644 --- a/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h +++ b/Source/LuckyWorldV2/Public/UI/Settings/CaptureSettingsUserWidget.h @@ -7,10 +7,6 @@ #include "SharedDef.h" #include "CaptureSettingsUserWidget.generated.h" -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnOpenMenuStateChanged, bool, Open); -DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStartCapture); -DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnStopCapture); - class UTaskListViewUserWidget; /** * @@ -27,15 +23,6 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite) bool bIsOpen; - UPROPERTY(BlueprintCallable, BlueprintAssignable, Category = "Event") - FOnOpenMenuStateChanged OnOpenMenuStateChanged; - - UPROPERTY(BlueprintCallable, BlueprintAssignable, Category = "Event") - FOnStartCapture OnStartCapture; - - UPROPERTY(BlueprintCallable, BlueprintAssignable, Category = "Event") - FOnStopCapture OnStopCapture; - public: UFUNCTION(BlueprintCallable) void ToggleMenu(); diff --git a/Source/LuckyWorldV2/Public/UI/Settings/PathfindingSelectorUserWidget.h b/Source/LuckyWorldV2/Public/UI/Settings/PathfindingSelectorUserWidget.h new file mode 100644 index 00000000..f70fa615 --- /dev/null +++ b/Source/LuckyWorldV2/Public/UI/Settings/PathfindingSelectorUserWidget.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "PathfindingSelectorUserWidget.generated.h" + +/** + * + */ +UCLASS() +class LUCKYWORLDV2_API UPathfindingSelectorUserWidget : public UUserWidget +{ + GENERATED_BODY() + +};