LeviLamina
Loading...
Searching...
No Matches
Options.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/input/KeyboardType.h"
7#include "mc/client/options/BaseOptions.h"
8#include "mc/client/options/GraphicsQualityPresetMode.h"
9#include "mc/client/options/IOptions.h"
10#include "mc/client/renderer/PlatformConfiguration.h"
11#include "mc/deps/core/file/PathBuffer.h"
12#include "mc/deps/core/platform/FileStorageDirectory.h"
13#include "mc/deps/core/utility/NonOwnerPointer.h"
14#include "mc/deps/core/utility/Subject.h"
15#include "mc/deps/input/InputMode.h"
16#include "mc/deviceinfo/DeviceMemoryTier.h"
17#include "mc/options/GraphicsMode.h"
18#include "mc/options/option_types/OptionID.h"
19#include "mc/options/option_types/OptionResetFlags.h"
20
21// auto generated forward declare list
22// clang-format off
23class ChatOptions;
27class IOptions;
29class Option;
32class OptionsObserver;
33class TaskGroup;
35namespace Bedrock::PubSub { class Subscription; }
36namespace Core { class SingleThreadedLock; }
37namespace Scripting { struct WatchdogSettings; }
38namespace Social::Events { class Event; }
39// clang-format on
40
41class Options : public ::BaseOptions {
42public:
43 // member variables
44 // NOLINTBEGIN
45 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ChatOptions>> mChatOptions;
46 ::ll::TypedStorage<8, 32, ::Core::PathBuffer<::std::string>> mFilePath;
47 ::ll::TypedStorage<1, 1, bool> mLoadInProgress;
48 ::ll::TypedStorage<1, 1, bool> mPrimaryUserStatus;
49 ::ll::TypedStorage<1, 1, bool> mAllowedToSave;
50 ::ll::TypedStorage<4, 4, ::IOptions::SaveRequestMode> mSaveRequestMode;
51 ::ll::TypedStorage<4, 4, ::std::atomic<int>> mSaveDeferralCount;
52 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mNextSaveTime;
53 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::OptionValueInterface>> mOptionValues;
54 ::ll::TypedStorage<4, 4, int> mDefaultViewDistanceChunks;
55 ::ll::TypedStorage<4, 4, int> mDefaultRayTracingViewDistanceChunks;
56 ::ll::TypedStorage<4, 4, int> mDefaultDeferredViewDistanceChunks;
57 ::ll::TypedStorage<4, 4, int> mRenderDistanceDefaultIdx;
58 ::ll::TypedStorage<4, 4, int> mRayDistanceDefaultIdx;
59 ::ll::TypedStorage<8, 24, ::std::vector<int>> mRenderDistanceLevels;
60 ::ll::TypedStorage<8, 24, ::std::vector<int>> mRayTracingRenderDistanceLevels;
61 ::ll::TypedStorage<8, 24, ::std::vector<int>> mDeferredRenderDistanceLevels;
62 ::ll::TypedStorage<4, 4, float> mPpmDpadSizeOld;
63 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mRecentSkinIds;
64 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::GamePadRemappingLayout>> mGamePadRemapping;
65 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::KeyboardRemappingLayout>>> mKeyboardRemappings;
66 ::ll::TypedStorage<8, 32, ::Core::Subject<::OptionsObserver, ::Core::SingleThreadedLock>> mEventSubject;
67 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mIOTaskGroup;
68 ::ll::TypedStorage<1, 1, bool> mIsSaveInProgress;
69 ::ll::TypedStorage<1, 1, bool> mChangeStorageInProgress;
70 ::ll::TypedStorage<8, 24, ::std::vector<::Bedrock::PubSub::Subscription>> mObserverSubscriptions;
71 ::ll::TypedStorage<8, 24, ::std::vector<::Bedrock::PubSub::Subscription>> mLockSubscriptions;
72 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator>>
73 mClientInstanceEventCoordinator;
74 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions>> mAdvancedGraphicsOptions;
75 ::ll::TypedStorage<8, 24, ::std::vector<::PlatformConfiguration::GraphicsQualityPreset>> mGraphicsQualityPresets;
76 ::ll::TypedStorage<1, 1, bool> mUserChangedBloom;
77 ::ll::TypedStorage<4, 4, int> mDeferredTargetFrameRate;
78 // NOLINTEND
79
80public:
81 // prevent constructor by default
82 Options();
83
84public:
85 // virtual functions
86 // NOLINTBEGIN
87 virtual ~Options() /*override*/;
88
89 virtual void load(::Core::PathBuffer<::std::string> filePath) /*override*/;
90
91 virtual void tickSaveTimer() /*override*/;
92
93 virtual void notifySaveAllowed() /*override*/;
94
95 virtual void saveIfNeeded() /*override*/;
96
97 virtual ::OptionSaveDeferral requestSaveDeferral() /*override*/;
98
99 virtual void reset(::OptionResetFlags flags, ::InputMode inputMode) /*override*/;
100
101 virtual bool getPrimaryUserStatus() const /*override*/;
102
103 virtual void setClientInstanceCoordinator(
104 ::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator> const& coordinator
105 ) /*override*/;
106
107 virtual ::FileStorageDirectory getFileStorageLocation() const /*override*/;
108
109 virtual void setFileStorageLocation(
110 ::FileStorageDirectory fileStorageDirectory,
111 ::std::function<void(bool)> onComplete
112 ) /*override*/;
113
114 virtual bool isValidOption(::OptionID optionId) const /*override*/;
115
116 virtual ::gsl::not_null<::Option*> get(::OptionID optionId) /*override*/;
117
118 virtual ::gsl::not_null<::Option const*> get(::OptionID optionId) const /*override*/;
119
120 virtual ::std::optional<::Option*> getIfValid(::OptionID optionId) /*override*/;
121
122 virtual ::std::optional<::Option const*> getIfValid(::OptionID optionId) const /*override*/;
123
124 virtual void getTelemetryOptions(::std::vector<::OptionID>& output) /*override*/;
125
126 virtual void refreshRenderDistanceLevels() /*override*/;
127
128 virtual bool isLoadInProgress() /*override*/;
129
130 virtual void addObserver(::OptionsObserver& observer) /*override*/;
131
132 virtual void loadOptionsFromString(::std::string options) /*override*/;
133
134 virtual void elevateSaveRequestMode(::IOptions::SaveRequestMode saveRequestMode) /*override*/;
135
136 virtual ::ChatOptions const& getChatOptions() const /*override*/;
137
138 virtual ::ChatOptions& getChatOptions() /*override*/;
139
140 virtual ::std::array<::std::unique_ptr<::Option>, 803> const& getAllRegisteredOptions() /*override*/;
141
142 virtual void forEachOption(::std::function<void(::Option*)> callback) /*override*/;
143
144 virtual int getViewDistanceChunks() const /*override*/;
145
146 virtual int getDefaultViewDistanceChunks(::GraphicsMode graphicsMode) const /*override*/;
147
148 virtual int getMaxViewDistanceChunks() const /*override*/;
149
150 virtual int getMaxViewDistanceChunksRaw() const /*override*/;
151
152 virtual bool getRayTracing() const /*override*/;
153
154 virtual bool getDeferred() const /*override*/;
155
156 virtual ::GamePadRemappingLayout& getGamePadRemapping() /*override*/;
157
158 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getCurrentKeyboardRemapping() const /*override*/;
159
160 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getKeyboardRemappingByType(::KeyboardType keyboardType) const
161 /*override*/;
162
163 virtual void setLanguage(::std::string const& language) /*override*/;
164
165 virtual ::std::string getLanguage() const /*override*/;
166
167 virtual void setPlayerViewPerspective(int playerViewPerspective) /*override*/;
168
169 virtual void setRecentSkinIds(::std::vector<::std::string> const& recentSkinIds) /*override*/;
170
171 virtual ::std::vector<::std::string> const& getRecentSkinIds() /*override*/;
172
173 virtual float getDefaultPlatformSafeZoneX() const /*override*/;
174
175 virtual float getDefaultPlatformSafeZoneY() const /*override*/;
176
177 virtual bool getServerboundClientDiagnosticsEnabled() const /*override*/;
178
179 virtual ::ScriptDebuggerSettings getScriptDebuggerSettings() const /*override*/;
180
181 virtual ::Scripting::WatchdogSettings getScriptWatchdogSettings() const /*override*/;
182
183 virtual ::GraphicsMode getGraphicsMode() const /*override*/;
184
185 virtual int getGraphicsQualityPresetMode() const /*override*/;
186
187 virtual int getDeferredTargetFrameRate() const /*override*/;
188
189 virtual void setSaveDeferralCount(int value) /*override*/;
190
191 virtual int getSaveDeferralCount() const /*override*/;
192
193 virtual ::std::optional<::DeviceMemoryTier> getScriptingMemoryTierOverride() const /*override*/;
194
195 virtual void setForceVibrantVisualsDisabled(bool value) /*override*/;
196 // NOLINTEND
197
198public:
199 // member functions
200 // NOLINTBEGIN
201 MCAPI Options(
202 ::std::unique_ptr<::OptionValueInterface> optionValues,
203 bool,
204 bool isPrimaryUser,
205 ::std::weak_ptr<::IOptions> const& perMachineOptionsSource,
206 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
207 );
208
209 MCAPI ::std::string _cleanPlayerName(::std::string const& name) const;
210
211 MCAPI void _loadInputMapping(::std::map<::std::string, ::std::string>& propertyMap);
212
213 MCAPI void _loadOptions(::std::map<::std::string, ::std::string>& propertyMap);
214
215 MCAPI void _loadSpecialOptions(::std::map<::std::string, ::std::string>& propertyMap);
216
217 MCAPI void _parseFilesAndLoadOptions();
218
219 MCAPI void _readGamepadMapping(::std::string const& optionKey, ::std::string const& value);
220
221 MCAPI void _readKeyboardMapping(::std::string const& optionKey, ::std::string const& value);
222
223 MCAPI void _registerAccessibilityOptions();
224
225 MCAPI void _registerChatOptions();
226
227 MCAPI void _registerHiddenFeatureOptions();
228
229 MCAPI void _registerOptions();
230
231 MCAPI void _registerSelfLock(::OptionID id, ::std::function<void(bool&)> isModifiableCondition);
232
233 MCAPI void _registerSelfObserver(
234 ::OptionID id,
235 ::std::function<void(::Option const&, ::InputMode)> onInputModeValueChangeCallback
236 );
237
238 MCAPI void _registerSelfObserver(::OptionID id, ::std::function<void(::Option const&)> onValueChangeCallback);
239
240 MCAPI void _registerSelfObservers();
241
242 MCAPI void
243 _resolveMultipleSwitchRealmsEnabled(bool doOverride, ::std::vector<::std::string> featureList, bool currentSetting);
244
245 MCAPI bool _save();
246
247 MCAPI void _saveAsync();
248
249 MCAPI void _saveInputMapping(::std::vector<::std::pair<::std::string, ::std::string>>& settingsVec) const;
250
251 MCAPI void _setAGFXValuesForPreset(::GraphicsQualityPresetMode preset);
252
253 MCAPI void _setOptionCallbacks();
254
255 MCAPI bool _shouldLoadGamepadMapping(::std::map<::std::string, ::std::string>& propertyMap) const;
256
257 MCAPI void fireEventOptionsUpdated(::Social::Events::Event& event, ::InputMode inputMode);
258 // NOLINTEND
259
260public:
261 // static variables
262 // NOLINTBEGIN
263 MCAPI static ::std::string const& do_not_save();
264
265 MCAPI static ::std::string const& not_available();
266 // NOLINTEND
267
268public:
269 // constructor thunks
270 // NOLINTBEGIN
271 MCAPI void* $ctor(
272 ::std::unique_ptr<::OptionValueInterface> optionValues,
273 bool,
274 bool isPrimaryUser,
275 ::std::weak_ptr<::IOptions> const& perMachineOptionsSource,
276 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
277 );
278 // NOLINTEND
279
280public:
281 // destructor thunk
282 // NOLINTBEGIN
283 MCAPI void $dtor();
284 // NOLINTEND
285
286public:
287 // virtual function thunks
288 // NOLINTBEGIN
289 MCAPI void $load(::Core::PathBuffer<::std::string> filePath);
290
291 MCAPI void $tickSaveTimer();
292
293 MCAPI void $notifySaveAllowed();
294
295 MCAPI void $saveIfNeeded();
296
297 MCAPI ::OptionSaveDeferral $requestSaveDeferral();
298
299 MCAPI void $reset(::OptionResetFlags flags, ::InputMode inputMode);
300
301 MCAPI bool $getPrimaryUserStatus() const;
302
303 MCAPI void
304 $setClientInstanceCoordinator(::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator> const& coordinator);
305
306 MCAPI ::FileStorageDirectory $getFileStorageLocation() const;
307
308 MCAPI void
309 $setFileStorageLocation(::FileStorageDirectory fileStorageDirectory, ::std::function<void(bool)> onComplete);
310
311 MCFOLD bool $isValidOption(::OptionID optionId) const;
312
313 MCFOLD ::gsl::not_null<::Option*> $get(::OptionID optionId);
314
315 MCFOLD ::gsl::not_null<::Option const*> $get(::OptionID optionId) const;
316
317 MCFOLD ::std::optional<::Option*> $getIfValid(::OptionID optionId);
318
319 MCFOLD ::std::optional<::Option const*> $getIfValid(::OptionID optionId) const;
320
321 MCAPI void $getTelemetryOptions(::std::vector<::OptionID>& output);
322
323 MCAPI void $refreshRenderDistanceLevels();
324
325 MCAPI bool $isLoadInProgress();
326
327 MCAPI void $addObserver(::OptionsObserver& observer);
328
329 MCFOLD void $loadOptionsFromString(::std::string options);
330
331 MCAPI void $elevateSaveRequestMode(::IOptions::SaveRequestMode saveRequestMode);
332
333 MCFOLD ::ChatOptions const& $getChatOptions() const;
334
335 MCFOLD ::ChatOptions& $getChatOptions();
336
337 MCFOLD ::std::array<::std::unique_ptr<::Option>, 803> const& $getAllRegisteredOptions();
338
339 MCFOLD void $forEachOption(::std::function<void(::Option*)> callback);
340
341 MCAPI int $getViewDistanceChunks() const;
342
343 MCAPI int $getDefaultViewDistanceChunks(::GraphicsMode graphicsMode) const;
344
345 MCAPI int $getMaxViewDistanceChunks() const;
346
347 MCAPI int $getMaxViewDistanceChunksRaw() const;
348
349 MCAPI bool $getRayTracing() const;
350
351 MCAPI bool $getDeferred() const;
352
353 MCAPI ::GamePadRemappingLayout& $getGamePadRemapping();
354
355 MCAPI ::std::shared_ptr<::KeyboardRemappingLayout> $getCurrentKeyboardRemapping() const;
356
357 MCAPI ::std::shared_ptr<::KeyboardRemappingLayout> $getKeyboardRemappingByType(::KeyboardType keyboardType) const;
358
359 MCAPI void $setLanguage(::std::string const& language);
360
361 MCAPI ::std::string $getLanguage() const;
362
363 MCAPI void $setPlayerViewPerspective(int playerViewPerspective);
364
365 MCAPI void $setRecentSkinIds(::std::vector<::std::string> const& recentSkinIds);
366
367 MCAPI ::std::vector<::std::string> const& $getRecentSkinIds();
368
369 MCAPI float $getDefaultPlatformSafeZoneX() const;
370
371 MCAPI float $getDefaultPlatformSafeZoneY() const;
372
373 MCAPI bool $getServerboundClientDiagnosticsEnabled() const;
374
375 MCAPI ::ScriptDebuggerSettings $getScriptDebuggerSettings() const;
376
377 MCAPI ::Scripting::WatchdogSettings $getScriptWatchdogSettings() const;
378
379 MCAPI ::GraphicsMode $getGraphicsMode() const;
380
381 MCAPI int $getGraphicsQualityPresetMode() const;
382
383 MCAPI int $getDeferredTargetFrameRate() const;
384
385 MCAPI void $setSaveDeferralCount(int value);
386
387 MCAPI int $getSaveDeferralCount() const;
388
389 MCAPI ::std::optional<::DeviceMemoryTier> $getScriptingMemoryTierOverride() const;
390
391 MCAPI void $setForceVibrantVisualsDisabled(bool value);
392 // NOLINTEND
393
394public:
395 // vftables
396 // NOLINTBEGIN
397 MCNAPI static void** $vftable();
398 // NOLINTEND
399};
Definition BaseOptions.h:5
Definition Subscription.h:10
Definition ChatOptions.h:5
Definition ClientInstanceEventCoordinator.h:16
Definition SingleThreadedLock.h:7
Definition GamePadRemappingLayout.h:5
Definition IAdvancedGraphicsOptions.h:16
Definition IOptions.h:5
Definition KeyboardRemappingLayout.h:5
Definition OptionSaveDeferral.h:5
Definition OptionValueInterface.h:5
Definition Option.h:22
Definition OptionsObserver.h:5
Definition Options.h:5
static MCAPI void ** $vftable()
Definition Event.h:18
Definition TaskGroup.h:57
Definition ScriptDebuggerSettings.h:8
Definition WatchdogSettings.h:7