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

#include <UserSettingSubsystem.h>

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

Public 멤버 함수

virtual void Initialize (FSubsystemCollectionBase &Collection) override
 
void ApplyUserGameSettingsToSaveGame (const UUserGameSettings *RuntimeSettings=nullptr) const
 
void ApplySaveGameToUserGameSettings (UUserGameSettings *RuntimeSettings=nullptr) const
 
void ApplyUserGameSettingsToCurrentGame (const UUserGameSettings *RuntimeSettings=nullptr) const
 
void ApplyUserGameSettingsToCurrentGame (EUserGameSetting Setting, const UUserGameSettings *RuntimeSettings=nullptr) const
 
bool LoadUserGameSettingsSaveGame ()
 
bool SaveUserGameSettingsSaveGame () const
 
FORCEINLINE UUserGameSettingsGetUserGameSettings () const
 
FORCEINLINE UUserGameSettingsSaveGameGetUserGameSettingsSaveGame () const
 

Protected 멤버 함수

bool LoadUserGameSettingsData ()
 
bool LoadAndApplyUserGameSettings (bool &LoadCompletion)
 

Protected 속성

TObjectPtr< UUserGameSettingsUserGameSettings
 
TObjectPtr< UUserGameSettingsSaveGameUserGameSettingsSaveGame
 
FString UserGameSettingsSlotName = TEXT("UserGameSettings")
 
int32 UserGameSettingsSlotUserIndex = 0
 

멤버 함수 문서화

◆ ApplySaveGameToUserGameSettings()

void UUserSettingSubsystem::ApplySaveGameToUserGameSettings ( UUserGameSettings RuntimeSettings = nullptr) const
235{
236 UUserGameSettings* RuntimeSettings = InRuntimeSettings ? InRuntimeSettings : UserGameSettings.Get();
237
238 if (UserGameSettingsSaveGame == nullptr || RuntimeSettings == nullptr)
239 {
240 return;
241 }
242
243 TMap<EUserGameSetting, FInstancedStruct>& RuntimeSettingsMap = RuntimeSettings->GetMutableSettings();
244
245 for (const TPair<EUserGameSetting, FInstancedStruct>& SavedPair : UserGameSettingsSaveGame->Settings)
246 {
247 FInstancedStruct* RuntimeStruct = RuntimeSettingsMap.Find(SavedPair.Key);
248
249 if (RuntimeStruct == nullptr)
250 {
251 continue;
252 }
253
254 FSettingsBase* Setting = RuntimeStruct->GetMutablePtr<FSettingsBase>();
255
256 if (Setting == nullptr)
257 {
258 continue;
259 }
260
261 Setting->SetSettingValue(SavedPair.Value);
262 }
263}
Definition UserGameSettings.h:362
FORCEINLINE TMap< EUserGameSetting, FInstancedStruct > & GetMutableSettings()
Definition UserGameSettings.h:374
TObjectPtr< UUserGameSettings > UserGameSettings
Definition UserSettingSubsystem.h:55
TObjectPtr< UUserGameSettingsSaveGame > UserGameSettingsSaveGame
Definition UserSettingSubsystem.h:58
Definition UserGameSettings.h:170
virtual void SetSettingValue(const FInstancedStruct &SettingValue)
Definition UserGameSettings.cpp:262
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyUserGameSettingsToCurrentGame() [1/2]

void UUserSettingSubsystem::ApplyUserGameSettingsToCurrentGame ( const UUserGameSettings RuntimeSettings = nullptr) const
155{
156 const UUserGameSettings* RuntimeSettings = InRuntimeSettings ? InRuntimeSettings : UserGameSettings;
157
158 if (RuntimeSettings == nullptr)
159 {
160 LOG_ERROR(LogCK, "RuntimeSettings가 nullptr입니다.");
161 return;
162 }
163
164 const UEnum* UserGameSettingEnum = StaticEnum<EUserGameSetting>();
165 check(UserGameSettingEnum);
166
167 for (int32 Index = 1; Index < UserGameSettingEnum->NumEnums(); ++Index)
168 {
169 const int64 Idx = UserGameSettingEnum->GetValueByIndex(Index);
170 const EUserGameSetting Setting = static_cast<EUserGameSetting>(Idx);
171
172 if (Setting == EUserGameSetting::None)
173 {
174 continue;
175 }
176
177 const FInstancedStruct* SettingStruct = RuntimeSettings->GetSettings().Find(Setting);
178
179 if (SettingStruct == nullptr)
180 {
181 continue;
182 }
183
184 const FSettingsBase* SettingBase = SettingStruct->GetPtr<FSettingsBase>();
185
186 if (SettingBase == nullptr)
187 {
188 LOG_ERROR(LogCK, "%s로 변환할 수 없습니다.", NAMEOF(FSettingsBase));
189 continue;
190 }
191
192 SettingBase->ApplySettings(RuntimeSettings, GetGameInstance());
193 }
194
195 UGameUserSettings* CurrentGameUserSettings = GEngine->GetGameUserSettings();
196 checkf(CurrentGameUserSettings, TEXT("%s를 가져올 수 없습니다."), NAMEOF(UGameUserSettings));
197 CurrentGameUserSettings->ApplySettings(false);
198}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF(Type)
Definition CK_UE.h:30
EUserGameSetting
Definition EUserGameSettingHeader.h:18
const TMap< EUserGameSetting, FInstancedStruct > GetSettings(const EUserGameSettingCategory Category) const
Definition UserGameSettings.cpp:455
virtual void ApplySettings(const UUserGameSettings *RuntimeSettings, UGameInstance *GameInstance) const
Definition UserGameSettings.cpp:265
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyUserGameSettingsToCurrentGame() [2/2]

void UUserSettingSubsystem::ApplyUserGameSettingsToCurrentGame ( EUserGameSetting  Setting,
const UUserGameSettings RuntimeSettings = nullptr 
) const
202{
203 if (Setting == EUserGameSetting::None)
204 {
205 return;
206 }
207
208 const UUserGameSettings* RuntimeSettings = InRuntimeSettings ? InRuntimeSettings : UserGameSettings;
209 check(RuntimeSettings);
210
211 const FInstancedStruct* SettingStruct = RuntimeSettings->GetSettings().Find(Setting);
212
213 if (SettingStruct == nullptr)
214 {
215 return;
216 }
217
218 const FSettingsBase* SettingBase = SettingStruct->GetPtr<FSettingsBase>();
219
220 if (SettingBase == nullptr)
221 {
222 LOG_ERROR(LogCK, "%s로 변환할 수 없습니다.", NAMEOF(FSettingsBase));
223 return;
224 }
225
226 SettingBase->ApplySettings(RuntimeSettings, GetGameInstance());
227
228 UGameUserSettings* CurrentGameUserSettings = GEngine->GetGameUserSettings();
229 checkf(CurrentGameUserSettings, TEXT("%s를 가져올 수 없습니다."), NAMEOF(UGameUserSettings));
230 CurrentGameUserSettings->ApplySettings(false);
231}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyUserGameSettingsToSaveGame()

void UUserSettingSubsystem::ApplyUserGameSettingsToSaveGame ( const UUserGameSettings RuntimeSettings = nullptr) const
130{
131 const UUserGameSettings* RuntimeSettings = InRuntimeSettings ? InRuntimeSettings : UserGameSettings;
132
133 if (UserGameSettingsSaveGame == nullptr || RuntimeSettings == nullptr)
134 {
135 return;
136 }
137
139
140 for (const TPair<EUserGameSetting, FInstancedStruct>& SettingPair : RuntimeSettings->GetSettings())
141 {
142 const FSettingsBase* Setting = SettingPair.Value.GetPtr<FSettingsBase>();
143
144 if (Setting == nullptr)
145 {
146 continue;
147 }
148
149 UserGameSettingsSaveGame->Settings.Add(SettingPair.Key, Setting->GetSettingValue());
150 }
151}
TMap< EUserGameSetting, FInstancedStruct > Settings
Definition UserGameSettings.h:396
virtual FInstancedStruct GetSettingValue() const
Definition UserGameSettings.cpp:256
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetUserGameSettings()

FORCEINLINE UUserGameSettings * UUserSettingSubsystem::GetUserGameSettings ( ) const
inline
40 {
41 return UserGameSettings;
42 }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetUserGameSettingsSaveGame()

FORCEINLINE UUserGameSettingsSaveGame * UUserSettingSubsystem::GetUserGameSettingsSaveGame ( ) const
inline
45 {
47 }

◆ Initialize()

void UUserSettingSubsystem::Initialize ( FSubsystemCollectionBase &  Collection)
overridevirtual
15{
16 Super::Initialize(Collection);
17 FTimerManager& TimerManager = GetWorld()->GetTimerManager();
18
19 if (LoadUserGameSettingsData() == false)
20 {
21 return;
22 }
23
24 if (LoadUserGameSettingsSaveGame() == false)
25 {
26 return;
27 }
28
29 TimerManager.SetTimerForNextTick([this]()
30 {
33 });
34}
bool LoadUserGameSettingsSaveGame()
Definition UserSettingSubsystem.cpp:87
void ApplyUserGameSettingsToCurrentGame(const UUserGameSettings *RuntimeSettings=nullptr) const
Definition UserSettingSubsystem.cpp:154
void ApplySaveGameToUserGameSettings(UUserGameSettings *RuntimeSettings=nullptr) const
Definition UserSettingSubsystem.cpp:234
bool LoadUserGameSettingsData()
Definition UserSettingSubsystem.cpp:37
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ LoadAndApplyUserGameSettings()

bool UUserSettingSubsystem::LoadAndApplyUserGameSettings ( bool &  LoadCompletion)
protected
59{
60 USaveGame* SaveGame = UGameplayStatics::LoadGameFromSlot(UserGameSettingsSlotName, UserGameSettingsSlotUserIndex);
61 UserGameSettingsSaveGame = Cast<UUserGameSettingsSaveGame>(SaveGame);
62
63 if (UserGameSettingsSaveGame == nullptr)
64 {
65 LOG_ERROR(LogCK, "%s 슬롯 로드에 실패했습니다.", *UserGameSettingsSlotName);
66 return false;
67 }
68
69 if (UserGameSettingsSaveGame->Settings.IsEmpty() == false)
70 {
71 LoadCompletion = true;
72 return true;
73 }
74
75 if (UserGameSettings == nullptr && LoadUserGameSettingsData() == false)
76 {
77 LoadCompletion = false;
78 return true;
79 }
80
82 LoadCompletion = SaveUserGameSettingsSaveGame();
83 return true;
84}
bool SaveUserGameSettingsSaveGame() const
Definition UserSettingSubsystem.cpp:115
void ApplyUserGameSettingsToSaveGame(const UUserGameSettings *RuntimeSettings=nullptr) const
Definition UserSettingSubsystem.cpp:129
int32 UserGameSettingsSlotUserIndex
Definition UserSettingSubsystem.h:64
FString UserGameSettingsSlotName
Definition UserSettingSubsystem.h:61
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LoadUserGameSettingsData()

bool UUserSettingSubsystem::LoadUserGameSettingsData ( )
protected
38{
40 {
41 return true;
42 }
43
44 const UUserGameSettings* DefaultUserSettings = GetDefault<UUserGameSettings>();
45
46 UserGameSettings = DuplicateObject<UUserGameSettings>(DefaultUserSettings, this);
47
49 {
50 return true;
51 }
52
53 LOG_ERROR(LogCK, "UserGameSettings 복제에 실패했습니다.");
54 return false;
55}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LoadUserGameSettingsSaveGame()

bool UUserSettingSubsystem::LoadUserGameSettingsSaveGame ( )
88{
89 bool LoadCompletion = false;
90
91 if (UGameplayStatics::DoesSaveGameExist(UserGameSettingsSlotName, UserGameSettingsSlotUserIndex) && LoadAndApplyUserGameSettings(LoadCompletion))
92 {
93 return LoadCompletion;
94 }
95
96 UserGameSettingsSaveGame = Cast<UUserGameSettingsSaveGame>(UGameplayStatics::CreateSaveGameObject(UUserGameSettingsSaveGame::StaticClass()));
97
98 if (UserGameSettingsSaveGame == nullptr)
99 {
100 LOG_ERROR(LogCK, "%s 생성에 실패했습니다.", NAMEOF(UUserGameSettingsSaveGame));
101 return false;
102 }
103
104 if (UserGameSettings == nullptr && LoadUserGameSettingsData() == false)
105 {
106 return false;
107 }
108
110 const bool bResult = SaveUserGameSettingsSaveGame();
111 return bResult;
112}
Definition UserGameSettingsSaveGame.h:16
bool LoadAndApplyUserGameSettings(bool &LoadCompletion)
Definition UserSettingSubsystem.cpp:58
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SaveUserGameSettingsSaveGame()

bool UUserSettingSubsystem::SaveUserGameSettingsSaveGame ( ) const
116{
117 if (UserGameSettingsSaveGame == nullptr)
118 {
119 LOG_ERROR(LogCK, "저장할 UserGameSettingsSaveGame이 nullptr입니다.");
120 return false;
121 }
122 else
123 {
125 }
126}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ UserGameSettings

TObjectPtr<UUserGameSettings> UUserSettingSubsystem::UserGameSettings
protected

◆ UserGameSettingsSaveGame

TObjectPtr<UUserGameSettingsSaveGame> UUserSettingSubsystem::UserGameSettingsSaveGame
protected

◆ UserGameSettingsSlotName

FString UUserSettingSubsystem::UserGameSettingsSlotName = TEXT("UserGameSettings")
protected

◆ UserGameSettingsSlotUserIndex

int32 UUserSettingSubsystem::UserGameSettingsSlotUserIndex = 0
protected

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