Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UTitleOptionPopupWidget 클래스 참조

#include <TitleOptionPopupWidget.h>

UTitleOptionPopupWidget에 대한 상속 다이어그램 :
Inheritance graph
UTitleOptionPopupWidget에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

virtual void OnActivated () override
 
- UPopupWidgetBase(으)로부터 상속된 Public 멤버 함수
virtual void OnPoppedFromLayer () override
 
virtual void BeginDestroy () override
 
void Close (EPopupResult Result)
 
void FinishClose ()
 
FORCEINLINE EPopupResult GetResult () const
 
FORCEINLINE bool IsClosing () const
 
- UUserWidgetBase(으)로부터 상속된 Public 멤버 함수
virtual void SetAbilitySystemComponent (AActor *InOwner)
 
virtual UAbilitySystemComponent * GetAbilitySystemComponent () const override
 
virtual void OnPushedToLayer ()
 
virtual void OnDeactivated ()
 
void Activate ()
 
void Deactivate ()
 
FORCEINLINE FGameplayTag GetLayerTag () const
 
FORCEINLINE void SetLayerTag (const FGameplayTag InTag)
 
FORCEINLINE bool IsPrimary () const
 
FORCEINLINE void SetPrimary (const bool InPrimary)
 
FORCEINLINE EWidgetState GetWidgetState () const
 
FORCEINLINE void SetWidgetState (const EWidgetState InState)
 
FORCEINLINE UWaitForWidgetActivationGetActivationHandle ()
 
FORCEINLINE bool HasAppearanceAnim () const
 
FORCEINLINE bool HasDisappearanceAnim () const
 

Protected 멤버 함수

virtual void NativeConstruct () override
 
virtual void NativeDestruct () override
 
bool InitializeLocalUserGameSettings ()
 
void RebuildSettingList (EUserGameSettingCategory SettingCategory)
 
void AddSettingFieldBySettingStruct (EUserGameSetting SettingType, const FInstancedStruct &SettingStruct)
 
void OnSideButtonClicked (UContextButton *ButtonContext)
 
void OnExitButtonClicked ()
 
void OnSideButtonClicked_Internal (UContextButton *LastClickedBtn, UContextButton *NewClickedBtn)
 
template<typename TFieldWidget , typename TSettings >
void AddSettingField (EUserGameSetting SettingType)
 
- UPopupWidgetBase(으)로부터 상속된 Protected 멤버 함수
void OnCloseRequested (EPopupResult Result)
 
virtual void OnCloseRequested_Implementation (EPopupResult Result)
 
- UUserWidgetBase(으)로부터 상속된 Protected 멤버 함수
virtual void OnWidgetActivated ()
 
virtual void OnWidgetDeactivated ()
 
void OnPushedToLayer_Internal ()
 
void OnPoppedFromLayer_Internal ()
 
void OnActivated_Internal ()
 
void OnDeactivated_Internal ()
 

Protected 속성

TObjectPtr< UOptionSideButtonBTN_Video
 
TObjectPtr< UOptionSideButtonBTN_Audio
 
TObjectPtr< UOptionSideButtonBTN_Control
 
TObjectPtr< UButton > BTN_Exit
 
TObjectPtr< UScrollBox > SB_SettingList
 
TObjectPtr< UTextBlock > TXT_OptionHeader
 
- UUserWidgetBase(으)로부터 상속된 Protected 속성
EWidgetState WidgetState
 
TObjectPtr< UAbilitySystemComponent > ASC
 
FGameplayTag LayerTag
 
bool bPrimary = false
 
TObjectPtr< UWidgetAnimation > AppearanceAnim
 
TObjectPtr< UWidgetAnimation > DisappearanceAnim
 

Private 속성

TArray< TObjectPtr< UOptionSideButton > > Buttons
 
TObjectPtr< UContextButtonLastClickedButton
 
TObjectPtr< UUserGameSettingsLocalUserGameSettings
 

추가로 상속된 멤버들

- UPopupWidgetBase(으)로부터 상속된 Public 속성
FOnPopupClosed OnPopupClosed
 

멤버 함수 문서화

◆ AddSettingField()

template<typename TFieldWidget , typename TSettings >
void UTitleOptionPopupWidget::AddSettingField ( EUserGameSetting  SettingType)
protected
225{
226 if (SB_SettingList == nullptr || LocalUserGameSettings == nullptr)
227 {
228 LOG_ERROR(LogCK, "SB_SettingList 또는 LocalUserGameSettings가 nullptr입니다.");
229 return;
230 }
231
232 TSubclassOf<TFieldWidget> WidgetClass = LocalUserGameSettings->GetSettingFieldWidgetClass<TFieldWidget>();
233
234 if (WidgetClass == nullptr)
235 {
236 LOG_ERROR(LogCK, "%s WidgetClass가 nullptr입니다.", *TFieldWidget::StaticClass()->GetName());
237 return;
238 }
239
240 TFieldWidget* FieldWidget = CreateWidget<TFieldWidget>(this, WidgetClass);
241
242 if (FieldWidget == nullptr)
243 {
244 LOG_ERROR(LogCK, "%s 생성에 실패했습니다.", *TFieldWidget::StaticClass()->GetName());
245 return;
246 }
247
248 SB_SettingList->AddChild(FieldWidget);
249
250 TSettings* Option = LocalUserGameSettings->GetMutableSettingOption<TSettings>(SettingType);
251 check(Option);
252 FieldWidget->SetSettingValueRef(SettingType, *Option, LocalUserGameSettings);
253}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
TObjectPtr< UScrollBox > SB_SettingList
Definition TitleOptionPopupWidget.h:69
TObjectPtr< UUserGameSettings > LocalUserGameSettings
Definition TitleOptionPopupWidget.h:82

◆ AddSettingFieldBySettingStruct()

void UTitleOptionPopupWidget::AddSettingFieldBySettingStruct ( EUserGameSetting  SettingType,
const FInstancedStruct &  SettingStruct 
)
protected
200{
201 if (SettingStruct.GetPtr<FDropdownSettings>())
202 {
203 AddSettingField<USettingDropdownFieldWidget, FDropdownSettings>(SettingType);
204 return;
205 }
206
207 if (SettingStruct.GetPtr<FToggleSettings>())
208 {
209 AddSettingField<USettingToggleFieldWidget, FToggleSettings>(SettingType);
210 return;
211 }
212
213 if (SettingStruct.GetPtr<FMinMaxSliderSettings>())
214 {
215 AddSettingField<USettingSliderFieldWidget, FMinMaxSliderSettings>(SettingType);
216 return;
217 }
218
219 LOG_ERROR(LogCK, "%s의 Settings 타입을 FieldWidget으로 변환할 수 없습니다.", *Utils::EnumToString(SettingType));
220}
Definition UserGameSettings.h:266
Definition UserGameSettings.h:217
Definition UserGameSettings.h:243
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ InitializeLocalUserGameSettings()

bool UTitleOptionPopupWidget::InitializeLocalUserGameSettings ( )
protected
43{
44 UUserSettingSubsystem* DataSubsystem = GetGameInstance()->GetSubsystem<UUserSettingSubsystem>();
45
46 if (DataSubsystem == nullptr)
47 {
48 LOG_ERROR(LogCK, "%s를 찾을 수 없습니다.", NAMEOF(UUserSettingSubsystem));
49 return false;
50 }
51
52 if (DataSubsystem->GetUserGameSettings() == nullptr)
53 {
54 LOG_ERROR(LogCK, "UserGameSettings가 nullptr입니다.");
55 return false;
56 }
57
58 LocalUserGameSettings = DuplicateObject<UUserGameSettings>(DataSubsystem->GetUserGameSettings(), this);
59
60 if (LocalUserGameSettings == nullptr)
61 {
62 LOG_ERROR(LogCK, "LocalUserGameSettings 생성에 실패했습니다.");
63 return false;
64 }
65
67 return true;
68}
#define NAMEOF(Type)
Definition CK_UE.h:30
Definition UserSettingSubsystem.h:17
FORCEINLINE UUserGameSettings * GetUserGameSettings() const
Definition UserSettingSubsystem.h:39
void ApplySaveGameToUserGameSettings(UUserGameSettings *RuntimeSettings=nullptr) const
Definition UserSettingSubsystem.cpp:234
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ NativeConstruct()

void UTitleOptionPopupWidget::NativeConstruct ( )
overrideprotectedvirtual
17{
18 Super::NativeConstruct();
19
20 Buttons.Append
21 ({
25 });
26
27 for (UOptionSideButton* Button : Buttons)
28 {
29 if (Button)
30 {
31 Button->OnContextButtonClicked.AddDynamic(this, &UTitleOptionPopupWidget::OnSideButtonClicked);
32 }
33 }
34
35 if (BTN_Exit)
36 {
37 BTN_Exit->OnClicked.AddDynamic(this, &UTitleOptionPopupWidget::OnExitButtonClicked);
38 }
39}
Definition OptionSideButton.h:15
TObjectPtr< UOptionSideButton > BTN_Audio
Definition TitleOptionPopupWidget.h:60
TObjectPtr< UButton > BTN_Exit
Definition TitleOptionPopupWidget.h:66
void OnSideButtonClicked(UContextButton *ButtonContext)
Definition TitleOptionPopupWidget.cpp:113
TObjectPtr< UOptionSideButton > BTN_Control
Definition TitleOptionPopupWidget.h:63
void OnExitButtonClicked()
Definition TitleOptionPopupWidget.cpp:135
TArray< TObjectPtr< UOptionSideButton > > Buttons
Definition TitleOptionPopupWidget.h:76
TObjectPtr< UOptionSideButton > BTN_Video
Definition TitleOptionPopupWidget.h:57
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ NativeDestruct()

void UTitleOptionPopupWidget::NativeDestruct ( )
overrideprotectedvirtual
72{
73 for (UOptionSideButton* Button : Buttons)
74 {
75 if (Button)
76 {
77 Button->OnContextButtonClicked.RemoveAll(this);
78 }
79 }
80
81 if (BTN_Exit)
82 {
83 BTN_Exit->OnClicked.RemoveAll(this);
84 }
85
87 {
88 SB_SettingList->ClearChildren();
89 }
90
91 Buttons.Empty();
92 LocalUserGameSettings = nullptr;
93
94 Super::NativeDestruct();
95}

◆ OnActivated()

void UTitleOptionPopupWidget::OnActivated ( )
overridevirtual

UUserWidgetBase(으)로부터 재구현되었습니다.

99{
100 Super::OnActivated();
101
103 {
105 }
106 else
107 {
108 LOG_ERROR(LogCK, "초기화에 실패했습니다. ");
109 }
110}
bool InitializeLocalUserGameSettings()
Definition TitleOptionPopupWidget.cpp:42
void RebuildSettingList(EUserGameSettingCategory SettingCategory)
Definition TitleOptionPopupWidget.cpp:170
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnExitButtonClicked()

void UTitleOptionPopupWidget::OnExitButtonClicked ( )
protected
136{
137 UUserSettingSubsystem* DataSubsystem = GetGameInstance()->GetSubsystem<UUserSettingSubsystem>();
138
139 if (DataSubsystem == nullptr)
140 {
141 LOG_ERROR(LogCK, "%s를 찾을 수 없습니다.", NAMEOF(UUserSettingSubsystem));
142 Close(EPopupResult::Cancelled);
143 return;
144 }
145
146 if (LocalUserGameSettings == nullptr)
147 {
148 LOG_ERROR(LogCK, "LocalUserGameSettings가 nullptr입니다.");
149 Close(EPopupResult::Cancelled);
150 return;
151 }
152
154 DataSubsystem->ApplySaveGameToUserGameSettings();
155 DataSubsystem->ApplyUserGameSettingsToCurrentGame();
156
157 if (DataSubsystem->SaveUserGameSettingsSaveGame())
158 {
159 LOG_INFO(LogCK, "옵션 저장 성공");
160 }
161 else
162 {
163 LOG_WARNING(LogCK, "옵션 저장 실패");
164 }
165
166 Close(EPopupResult::Confirmed);
167}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
void Close(EPopupResult Result)
Definition PopupWidgetBase.cpp:12
bool SaveUserGameSettingsSaveGame() const
Definition UserSettingSubsystem.cpp:115
void ApplyUserGameSettingsToSaveGame(const UUserGameSettings *RuntimeSettings=nullptr) const
Definition UserSettingSubsystem.cpp:129
void ApplyUserGameSettingsToCurrentGame(const UUserGameSettings *RuntimeSettings=nullptr) const
Definition UserSettingSubsystem.cpp:154
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnSideButtonClicked()

void UTitleOptionPopupWidget::OnSideButtonClicked ( UContextButton ButtonContext)
protected
114{
115 if (ButtonContext == LastClickedButton)
116 {
117 return;
118 }
119
121 LastClickedButton = ButtonContext;
122
123 const UOptionSideButton* Button = Cast<UOptionSideButton>(ButtonContext);
124
125 if (Button == nullptr)
126 {
127 LOG_ERROR(LogCK, "%s로 변환에 실패했습니다. ", NAMEOF(UOptionSideButton));
128 return;
129 }
130
132}
FORCEINLINE EUserGameSettingCategory GetSideButtonType() const
Definition OptionSideButton.h:19
TObjectPtr< UContextButton > LastClickedButton
Definition TitleOptionPopupWidget.h:79
void OnSideButtonClicked_Internal(UContextButton *LastClickedBtn, UContextButton *NewClickedBtn)
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnSideButtonClicked_Internal()

void UTitleOptionPopupWidget::OnSideButtonClicked_Internal ( UContextButton LastClickedBtn,
UContextButton NewClickedBtn 
)
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RebuildSettingList()

void UTitleOptionPopupWidget::RebuildSettingList ( EUserGameSettingCategory  SettingCategory)
protected
171{
172 if (LocalUserGameSettings == nullptr && InitializeLocalUserGameSettings() == false)
173 {
174 LOG_ERROR(LogCK, "LocalUserGameSettings가 nullptr입니다.");
175 return;
176 }
177
178 if (SB_SettingList == nullptr)
179 {
180 LOG_ERROR(LogCK, "SB_SettingList가 nullptr입니다.");
181 return;
182 }
183
184 SB_SettingList->ClearChildren();
185 TXT_OptionHeader->SetText(FText::FromString(Utils::EnumToString(SettingCategory)));
186
187 for (auto [Key, Value] : LocalUserGameSettings->GetSettings(SettingCategory))
188 {
190 }
191
192 if (SB_SettingList->GetChildrenCount() == 0)
193 {
194 LOG_ERROR(LogCK, "%s에 FieldWidget이 정상적으로 추가되지 않았습니다. ", *SB_SettingList->GetName());
195 }
196}
TObjectPtr< UTextBlock > TXT_OptionHeader
Definition TitleOptionPopupWidget.h:72
void AddSettingFieldBySettingStruct(EUserGameSetting SettingType, const FInstancedStruct &SettingStruct)
Definition TitleOptionPopupWidget.cpp:199
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ BTN_Audio

TObjectPtr<UOptionSideButton> UTitleOptionPopupWidget::BTN_Audio
protected

◆ BTN_Control

TObjectPtr<UOptionSideButton> UTitleOptionPopupWidget::BTN_Control
protected

◆ BTN_Exit

TObjectPtr<UButton> UTitleOptionPopupWidget::BTN_Exit
protected

◆ BTN_Video

TObjectPtr<UOptionSideButton> UTitleOptionPopupWidget::BTN_Video
protected

◆ Buttons

TArray<TObjectPtr<UOptionSideButton> > UTitleOptionPopupWidget::Buttons
private

◆ LastClickedButton

TObjectPtr<UContextButton> UTitleOptionPopupWidget::LastClickedButton
private

◆ LocalUserGameSettings

TObjectPtr<UUserGameSettings> UTitleOptionPopupWidget::LocalUserGameSettings
private

◆ SB_SettingList

TObjectPtr<UScrollBox> UTitleOptionPopupWidget::SB_SettingList
protected

◆ TXT_OptionHeader

TObjectPtr<UTextBlock> UTitleOptionPopupWidget::TXT_OptionHeader
protected

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: