Space Plunder
Loading...
Searching...
No Matches
ModalMenuSystemWidget.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "Data/MenuData.h"
8#include "ModalMenuSystemWidget.generated.h"
9
10DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnModalButtonSelected, const int32, Index);
11
13
14UCLASS()
15class MENUSYSTEM_API UModalMenuSystemWidget : public UMenuSystemWidget
16{
17 GENERATED_BODY()
18
19public:
20 explicit UModalMenuSystemWidget(const FObjectInitializer& ObjectInitializer);
21
22 UPROPERTY(BlueprintAssignable, Category="Menu System|Modal")
23 FOnModalButtonSelected OnModalButtonSelected;
24 UPROPERTY(BlueprintAssignable, Category="Menu System|Modal")
25 FOnCloseModal OnCloseModal;
26
27
28 virtual UWidget* NativeGetDesiredFocusTarget() const override;
29 virtual bool NativeOnHandleBackAction() override;
30
31
32 UFUNCTION(BlueprintCallable, Category="Menu System|Modal")
33 void SetValues(const EMenuSystemModalAlert Alert, const EMenuSystemModalType Style, FString Title, FString Description, FString LeftText, FString RightText);
34 void SetValues(const FModalData& Data);
35
36
37 UFUNCTION(BlueprintCallable, Category="Menu System|Modal")
38 void CloseWindow();
39
40 UFUNCTION(BlueprintImplementableEvent, Category="Menu System|Modal")
41 void PlayOpenAnimation();
42
43 UFUNCTION(BlueprintImplementableEvent, Category="Menu System|Modal")
44 void PlayCloseAnimation();
45
46
47 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
48 FModalData ModalData;
49
57 int32 GetCloseButtonIndex() const {return CloseButtonIndex;};
58 int32 GetMainButtonIndex() const {return MainButtonIndex;};
59
60protected:
61 virtual bool Initialize() override;
62 virtual void NativePreConstruct() override;
63 virtual void NativeConstruct() override;
64
65 // UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
66 // FLinearColor AlertColor;
67
68 //- Get From BP Lib ?
69 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal|Sounds")
70 class USoundBase* DefaultOpenSound = nullptr;
71 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal|Sounds")
72 class USoundBase* NotificationSound = nullptr;
73 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal|Sounds")
74 class USoundBase* WarningSound = nullptr;
75 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal|Sounds")
76 class USoundBase* ErrorSound = nullptr;
77
78 //- Get From BP Lib ?
79 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
80 FLinearColor GeneralColor;
81 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
82 FLinearColor SystemColor;
83 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
84 FLinearColor WarningColor;
85 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
86 FLinearColor ErrorColor;
87 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
88 float SpacerSize = 17.0f;
89 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
90 int32 CloseButtonIndex = 0;
91 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
92 int32 MainButtonIndex = 1;
93 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal|Notification")
94 float NotificationLifetime = 3.0f;
95 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal|Notification")
96 float NotificationPadding = 5.0f;
97 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Menu System|Modal")
98 float BorderPadding = 32.0f;
99
100
101 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
102 class UHorizontalBox* MainButtonContainer = nullptr;
103 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
104 class UTextBlock* DescriptionTextBlock = nullptr;
105 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
106 class UTextBlock* TitleTextBlock = nullptr;
107 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
108 class UBorder* ModalBorder = nullptr;
109 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
110 class UVerticalBox* MainVerticalBox = nullptr;
111 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
112 class UHorizontalBox* ButtonHorizontalBox = nullptr;
113 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
114 class UBorder* HighlightColorBorder = nullptr;
115
116 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
117 class UStackBox* ExtraButtons = nullptr;
118
119 //- If there's only one button, Close button will always just close modal //
120 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
121 class USelectionButtonMenuSystem* CloseButton = nullptr;
122 //- If two, Main button will be primary action, eg. Confirm "Are you sure" option //
123 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta=(BindWidget), Category="Menu System|Modal")
124 class USelectionButtonMenuSystem* MainButton = nullptr;
125
126
127 UFUNCTION()
128 void OnButtonClicked(const int32 Index);
129
130
131private:
132
133 void PlaySound(USoundBase* Sound) const;
134
135 void ApplySettings();
136
137 void SetModal();
138
139
140 void CreateExtraButtons();
141
142 ETextJustify::Type JustifyType = ETextJustify::Left;
143 FLinearColor ColorType;
144
145 TSubclassOf<class UUserWidget> SelectionButtonClass;
146
147 FTimerHandle NotificationTimerHandle;
148
149
150};
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
EMenuSystemModalAlert
Definition MenuData.h:257
EMenuSystemModalType
Definition MenuData.h:247
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnModalButtonSelected, const int32, Index)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnCloseModal)
Definition MenuSystemWidget.h:19
Definition ModalMenuSystemWidget.h:16
int32 GetMainButtonIndex() const
Definition ModalMenuSystemWidget.h:58
Definition SelectionButtonMenuSystem.h:16
Definition MenuData.h:266