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
26class IOptions;
28class Option;
29class OptionsObserver;
30class TaskGroup;
31struct ChatOptions;
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(::FileStorageDirectory, ::std::function<void(bool)>) /*override*/;
110
111 virtual bool isValidOption(::OptionID optionId) const /*override*/;
112
113 virtual ::gsl::not_null<::Option*> get(::OptionID optionId) /*override*/;
114
115 virtual ::gsl::not_null<::Option const*> get(::OptionID optionId) const /*override*/;
116
117 virtual ::std::optional<::Option*> getIfValid(::OptionID optionId) /*override*/;
118
119 virtual ::std::optional<::Option const*> getIfValid(::OptionID optionId) const /*override*/;
120
121 virtual void getTelemetryOptions(::std::vector<::OptionID>& output) /*override*/;
122
123 virtual void refreshRenderDistanceLevels() /*override*/;
124
125 virtual bool isLoadInProgress() /*override*/;
126
127 virtual void addObserver(::OptionsObserver& observer) /*override*/;
128
129 virtual void loadOptionsFromString(::std::string options) /*override*/;
130
131 virtual void elevateSaveRequestMode(::IOptions::SaveRequestMode saveRequestMode) /*override*/;
132
133 virtual ::ChatOptions const& getChatOptions() const /*override*/;
134
135 virtual ::ChatOptions& getChatOptions() /*override*/;
136
137 virtual ::std::array<::std::unique_ptr<::Option>, 777> const& getAllRegisteredOptions() /*override*/;
138
139 virtual void forEachOption(::std::function<void(::Option*)> callback) /*override*/;
140
141 virtual int getViewDistanceChunks() const /*override*/;
142
143 virtual int getDefaultViewDistanceChunks(::GraphicsMode graphicsMode) const /*override*/;
144
145 virtual int getMaxViewDistanceChunks() const /*override*/;
146
147 virtual int getMaxViewDistanceChunksRaw() const /*override*/;
148
149 virtual bool getRayTracing() const /*override*/;
150
151 virtual bool getDeferred() const /*override*/;
152
153 virtual ::GamePadRemappingLayout& getGamePadRemapping() /*override*/;
154
155 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getCurrentKeyboardRemapping() const /*override*/;
156
157 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getKeyboardRemappingByType(::KeyboardType keyboardType) const
158 /*override*/;
159
160 virtual void setLanguage(::std::string const& language) /*override*/;
161
162 virtual ::std::string getLanguage() const /*override*/;
163
164 virtual void setPlayerViewPerspective(int playerViewPerspective) /*override*/;
165
166 virtual void setRecentSkinIds(::std::vector<::std::string> const& recentSkinIds) /*override*/;
167
168 virtual ::std::vector<::std::string> const& getRecentSkinIds() /*override*/;
169
170 virtual float getDefaultPlatformSafeZoneX() const /*override*/;
171
172 virtual float getDefaultPlatformSafeZoneY() const /*override*/;
173
174 virtual bool getServerboundClientDiagnosticsEnabled() const /*override*/;
175
176 virtual ::ScriptDebuggerSettings getScriptDebuggerSettings() const /*override*/;
177
178 virtual ::Scripting::WatchdogSettings getScriptWatchdogSettings() const /*override*/;
179
180 virtual ::GraphicsMode getGraphicsMode() const /*override*/;
181
182 virtual int getGraphicsQualityPresetMode() const /*override*/;
183
184 virtual int getDeferredTargetFrameRate() const /*override*/;
185
186 virtual void setSaveDeferralCount(int value) /*override*/;
187
188 virtual int getSaveDeferralCount() const /*override*/;
189
190 virtual ::std::optional<::DeviceMemoryTier> getScriptingMemoryTierOverride() const /*override*/;
191
192 virtual void setForceVibrantVisualsDisabled(bool value) /*override*/;
193 // NOLINTEND
194
195public:
196 // member functions
197 // NOLINTBEGIN
198 MCAPI Options(
199 ::std::unique_ptr<::OptionValueInterface> optionValues,
200 bool,
201 bool isPrimaryUser,
202 ::std::weak_ptr<::IOptions> const& perMachineOptionsSource,
203 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
204 );
205
206 MCAPI ::std::string _cleanPlayerName(::std::string const& name) const;
207
208 MCAPI void _loadInputMapping(::std::map<::std::string, ::std::string>& propertyMap);
209
210 MCAPI void _loadOptions(::std::map<::std::string, ::std::string>& propertyMap);
211
212 MCAPI void _loadSpecialOptions(::std::map<::std::string, ::std::string>& propertyMap);
213
214 MCAPI void _parseFilesAndLoadOptions();
215
216 MCAPI void _readGamepadMapping(::std::string const& optionKey, ::std::string const& value);
217
218 MCAPI void _readKeyboardMapping(::std::string const& optionKey, ::std::string const& value);
219
220 MCAPI void _registerAccessibilityOptions();
221
222 MCAPI void _registerChatOptions();
223
224 MCAPI void _registerHiddenFeatureOptions();
225
226 MCAPI void _registerOptions();
227
228 MCAPI void _registerSelfLock(::OptionID id, ::std::function<void(bool&)> isModifiableCondition);
229
230 MCAPI void _registerSelfObserver(
231 ::OptionID id,
232 ::std::function<void(::Option const&, ::InputMode)> onInputModeValueChangeCallback
233 );
234
235 MCAPI void _registerSelfObserver(::OptionID id, ::std::function<void(::Option const&)> onValueChangeCallback);
236
237 MCAPI void _registerSelfObservers();
238
239 MCAPI void
240 _resolveMultipleSwitchRealmsEnabled(bool doOverride, ::std::vector<::std::string> featureList, bool currentSetting);
241
242 MCAPI bool _save();
243
244 MCAPI void _saveAsync();
245
246 MCAPI void _saveInputMapping(::std::vector<::std::pair<::std::string, ::std::string>>& settingsVec) const;
247
248 MCAPI void _setAGFXValuesForPreset(::GraphicsQualityPresetMode preset);
249
250 MCAPI void _setOptionCallbacks();
251
252 MCAPI bool _shouldLoadGamepadMapping(::std::map<::std::string, ::std::string>& propertyMap) const;
253
254 MCAPI void fireEventOptionsUpdated(::Social::Events::Event& event, ::InputMode inputMode);
255 // NOLINTEND
256
257public:
258 // static variables
259 // NOLINTBEGIN
260 MCAPI static ::std::string const& do_not_save();
261
262 MCAPI static ::std::string const& not_available();
263 // NOLINTEND
264
265public:
266 // constructor thunks
267 // NOLINTBEGIN
268 MCAPI void* $ctor(
269 ::std::unique_ptr<::OptionValueInterface> optionValues,
270 bool,
271 bool isPrimaryUser,
272 ::std::weak_ptr<::IOptions> const& perMachineOptionsSource,
273 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
274 );
275 // NOLINTEND
276
277public:
278 // destructor thunk
279 // NOLINTBEGIN
280 MCAPI void $dtor();
281 // NOLINTEND
282
283public:
284 // virtual function thunks
285 // NOLINTBEGIN
286 MCAPI void $load(::Core::PathBuffer<::std::string> filePath);
287
288 MCAPI void $tickSaveTimer();
289
290 MCAPI void $notifySaveAllowed();
291
292 MCAPI void $saveIfNeeded();
293
294 MCAPI ::OptionSaveDeferral $requestSaveDeferral();
295
296 MCAPI void $reset(::OptionResetFlags flags, ::InputMode inputMode);
297
298 MCAPI bool $getPrimaryUserStatus() const;
299
300 MCAPI void
301 $setClientInstanceCoordinator(::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator> const& coordinator);
302
303 MCFOLD bool $isValidOption(::OptionID optionId) const;
304
305 MCFOLD ::gsl::not_null<::Option*> $get(::OptionID optionId);
306
307 MCFOLD ::gsl::not_null<::Option const*> $get(::OptionID optionId) const;
308
309 MCFOLD ::std::optional<::Option*> $getIfValid(::OptionID optionId);
310
311 MCFOLD ::std::optional<::Option const*> $getIfValid(::OptionID optionId) const;
312
313 MCAPI void $getTelemetryOptions(::std::vector<::OptionID>& output);
314
315 MCAPI void $refreshRenderDistanceLevels();
316
317 MCAPI bool $isLoadInProgress();
318
319 MCAPI void $addObserver(::OptionsObserver& observer);
320
321 MCFOLD void $loadOptionsFromString(::std::string options);
322
323 MCAPI void $elevateSaveRequestMode(::IOptions::SaveRequestMode saveRequestMode);
324
325 MCFOLD ::ChatOptions const& $getChatOptions() const;
326
327 MCFOLD ::ChatOptions& $getChatOptions();
328
329 MCFOLD ::std::array<::std::unique_ptr<::Option>, 777> const& $getAllRegisteredOptions();
330
331 MCFOLD void $forEachOption(::std::function<void(::Option*)> callback);
332
333 MCAPI int $getViewDistanceChunks() const;
334
335 MCAPI int $getDefaultViewDistanceChunks(::GraphicsMode graphicsMode) const;
336
337 MCAPI int $getMaxViewDistanceChunks() const;
338
339 MCAPI int $getMaxViewDistanceChunksRaw() const;
340
341 MCAPI bool $getRayTracing() const;
342
343 MCAPI bool $getDeferred() const;
344
345 MCAPI ::GamePadRemappingLayout& $getGamePadRemapping();
346
347 MCAPI ::std::shared_ptr<::KeyboardRemappingLayout> $getCurrentKeyboardRemapping() const;
348
349 MCAPI ::std::shared_ptr<::KeyboardRemappingLayout> $getKeyboardRemappingByType(::KeyboardType keyboardType) const;
350
351 MCAPI void $setLanguage(::std::string const& language);
352
353 MCAPI ::std::string $getLanguage() const;
354
355 MCAPI void $setPlayerViewPerspective(int playerViewPerspective);
356
357 MCAPI void $setRecentSkinIds(::std::vector<::std::string> const& recentSkinIds);
358
359 MCAPI ::std::vector<::std::string> const& $getRecentSkinIds();
360
361 MCAPI float $getDefaultPlatformSafeZoneX() const;
362
363 MCAPI float $getDefaultPlatformSafeZoneY() const;
364
365 MCAPI bool $getServerboundClientDiagnosticsEnabled() const;
366
367 MCAPI ::ScriptDebuggerSettings $getScriptDebuggerSettings() const;
368
369 MCAPI ::Scripting::WatchdogSettings $getScriptWatchdogSettings() const;
370
371 MCAPI ::GraphicsMode $getGraphicsMode() const;
372
373 MCAPI int $getGraphicsQualityPresetMode() const;
374
375 MCAPI int $getDeferredTargetFrameRate() const;
376
377 MCAPI void $setSaveDeferralCount(int value);
378
379 MCAPI int $getSaveDeferralCount() const;
380
381 MCAPI ::std::optional<::DeviceMemoryTier> $getScriptingMemoryTierOverride() const;
382
383 MCAPI void $setForceVibrantVisualsDisabled(bool value);
384 // NOLINTEND
385
386public:
387 // vftables
388 // NOLINTBEGIN
389 MCNAPI static void** $vftable();
390 // NOLINTEND
391};
Definition BaseOptions.h:5
Definition Subscription.h:10
Definition ClientInstanceEventCoordinator.h:16
Definition SingleThreadedLock.h:7
Definition GamePadRemappingLayout.h:5
Definition IAdvancedGraphicsOptions.h:10
Definition IOptions.h:5
Definition KeyboardRemappingLayout.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:53
Definition ChatOptions.h:5
Definition OptionSaveDeferral.h:5
Definition OptionValueInterface.h:5
Definition ScriptDebuggerSettings.h:8
Definition WatchdogSettings.h:7