3#include "mc/_HeaderOutputPredefine.h"
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"
38namespace Social::Events {
class Event; }
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;
89 virtual void load(::Core::PathBuffer<::std::string> filePath) ;
91 virtual void tickSaveTimer() ;
93 virtual void notifySaveAllowed() ;
95 virtual void saveIfNeeded() ;
97 virtual ::OptionSaveDeferral requestSaveDeferral() ;
99 virtual void reset(::OptionResetFlags flags, ::InputMode inputMode) ;
101 virtual bool getPrimaryUserStatus() const ;
103 virtual
void setClientInstanceCoordinator(
104 ::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator> const& coordinator
107 virtual ::FileStorageDirectory getFileStorageLocation() const ;
109 virtual
void setFileStorageLocation(::FileStorageDirectory, ::std::function<
void(
bool)>) ;
111 virtual
bool isValidOption(::OptionID optionId) const ;
113 virtual ::gsl::not_null<::Option*> get(::OptionID optionId) ;
115 virtual ::gsl::not_null<::Option const*> get(::OptionID optionId) const ;
117 virtual ::std::optional<::Option*> getIfValid(::OptionID optionId) ;
119 virtual ::std::optional<::Option const*> getIfValid(::OptionID optionId) const ;
121 virtual
void getTelemetryOptions(::std::vector<::OptionID>& output) ;
123 virtual
void refreshRenderDistanceLevels() ;
125 virtual
bool isLoadInProgress() ;
127 virtual
void addObserver(::OptionsObserver& observer) ;
129 virtual
void loadOptionsFromString(::std::
string options) ;
131 virtual
void elevateSaveRequestMode(::IOptions::SaveRequestMode saveRequestMode) ;
133 virtual ::ChatOptions const& getChatOptions() const ;
135 virtual ::ChatOptions& getChatOptions() ;
137 virtual ::std::array<::std::unique_ptr<::Option>, 777> const& getAllRegisteredOptions() ;
139 virtual
void forEachOption(::std::function<
void(::Option*)> callback) ;
141 virtual
int getViewDistanceChunks() const ;
143 virtual
int getDefaultViewDistanceChunks(::GraphicsMode graphicsMode) const ;
145 virtual
int getMaxViewDistanceChunks() const ;
147 virtual
int getMaxViewDistanceChunksRaw() const ;
149 virtual
bool getRayTracing() const ;
151 virtual
bool getDeferred() const ;
153 virtual ::GamePadRemappingLayout& getGamePadRemapping() ;
155 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getCurrentKeyboardRemapping() const ;
157 virtual ::std::shared_ptr<::KeyboardRemappingLayout> getKeyboardRemappingByType(::KeyboardType keyboardType) const
160 virtual
void setLanguage(::std::
string const& language) ;
162 virtual ::std::
string getLanguage() const ;
164 virtual
void setPlayerViewPerspective(
int playerViewPerspective) ;
166 virtual
void setRecentSkinIds(::std::vector<::std::
string> const& recentSkinIds) ;
168 virtual ::std::vector<::std::
string> const& getRecentSkinIds() ;
170 virtual
float getDefaultPlatformSafeZoneX() const ;
172 virtual
float getDefaultPlatformSafeZoneY() const ;
174 virtual
bool getServerboundClientDiagnosticsEnabled() const ;
176 virtual ::ScriptDebuggerSettings getScriptDebuggerSettings() const ;
178 virtual ::Scripting::WatchdogSettings getScriptWatchdogSettings() const ;
180 virtual ::GraphicsMode getGraphicsMode() const ;
182 virtual
int getGraphicsQualityPresetMode() const ;
184 virtual
int getDeferredTargetFrameRate() const ;
186 virtual
void setSaveDeferralCount(
int value) ;
188 virtual
int getSaveDeferralCount() const ;
190 virtual ::std::optional<::DeviceMemoryTier> getScriptingMemoryTierOverride() const ;
192 virtual
void setForceVibrantVisualsDisabled(
bool value) ;
199 ::std::unique_ptr<::OptionValueInterface> optionValues,
202 ::std::weak_ptr<::IOptions> const& perMachineOptionsSource,
203 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
206 MCAPI ::std::
string _cleanPlayerName(::std::
string const& name) const;
208 MCAPI
void _loadInputMapping(::std::map<::std::
string, ::std::
string>& propertyMap);
210 MCAPI
void _loadOptions(::std::map<::std::
string, ::std::
string>& propertyMap);
212 MCAPI
void _loadSpecialOptions(::std::map<::std::
string, ::std::
string>& propertyMap);
214 MCAPI
void _parseFilesAndLoadOptions();
216 MCAPI
void _readGamepadMapping(::std::
string const& optionKey, ::std::
string const& value);
218 MCAPI
void _readKeyboardMapping(::std::
string const& optionKey, ::std::
string const& value);
220 MCAPI
void _registerAccessibilityOptions();
222 MCAPI
void _registerChatOptions();
224 MCAPI
void _registerHiddenFeatureOptions();
226 MCAPI
void _registerOptions();
228 MCAPI
void _registerSelfLock(::OptionID
id, ::std::function<
void(
bool&)> isModifiableCondition);
230 MCAPI
void _registerSelfObserver(
232 ::std::function<
void(::Option const&, ::InputMode)> onInputModeValueChangeCallback
235 MCAPI
void _registerSelfObserver(::OptionID
id, ::std::function<
void(::Option const&)> onValueChangeCallback);
237 MCAPI
void _registerSelfObservers();
240 _resolveMultipleSwitchRealmsEnabled(
bool doOverride, ::std::vector<::std::
string> featureList,
bool currentSetting);
244 MCAPI
void _saveAsync();
246 MCAPI
void _saveInputMapping(::std::vector<::std::pair<::std::
string, ::std::
string>>& settingsVec) const;
248 MCAPI
void _setAGFXValuesForPreset(::GraphicsQualityPresetMode preset);
250 MCAPI
void _setOptionCallbacks();
252 MCAPI
bool _shouldLoadGamepadMapping(::std::map<::std::
string, ::std::
string>& propertyMap) const;
254 MCAPI
void fireEventOptionsUpdated(::Social::Events::Event& event, ::InputMode inputMode);
260 MCAPI static ::std::
string const& do_not_save();
262 MCAPI static ::std::
string const& not_available();
269 ::std::unique_ptr<::OptionValueInterface> optionValues,
272 ::std::weak_ptr<::IOptions> const& perMachineOptionsSource,
273 ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> const& advancedGraphicsOptions
286 MCAPI
void $load(::Core::PathBuffer<::std::
string> filePath);
288 MCAPI
void $tickSaveTimer();
290 MCAPI
void $notifySaveAllowed();
292 MCAPI
void $saveIfNeeded();
294 MCAPI ::OptionSaveDeferral $requestSaveDeferral();
296 MCAPI
void $reset(::OptionResetFlags flags, ::InputMode inputMode);
298 MCAPI
bool $getPrimaryUserStatus() const;
301 $setClientInstanceCoordinator(::Bedrock::NonOwnerPointer<::ClientInstanceEventCoordinator> const& coordinator);
303 MCFOLD
bool $isValidOption(::OptionID optionId) const;
305 MCFOLD ::gsl::not_null<::Option*> $get(::OptionID optionId);
307 MCFOLD ::gsl::not_null<::Option const*> $get(::OptionID optionId) const;
309 MCFOLD ::std::optional<::Option*> $getIfValid(::OptionID optionId);
311 MCFOLD ::std::optional<::Option const*> $getIfValid(::OptionID optionId) const;
313 MCAPI
void $getTelemetryOptions(::std::vector<::OptionID>& output);
315 MCAPI
void $refreshRenderDistanceLevels();
317 MCAPI
bool $isLoadInProgress();
319 MCAPI
void $addObserver(::OptionsObserver& observer);
321 MCFOLD
void $loadOptionsFromString(::std::
string options);
323 MCAPI
void $elevateSaveRequestMode(::IOptions::SaveRequestMode saveRequestMode);
325 MCFOLD ::ChatOptions const& $getChatOptions() const;
327 MCFOLD ::ChatOptions& $getChatOptions();
329 MCFOLD ::std::array<::std::unique_ptr<::Option>, 777> const& $getAllRegisteredOptions();
331 MCFOLD
void $forEachOption(::std::function<
void(::Option*)> callback);
333 MCAPI
int $getViewDistanceChunks() const;
335 MCAPI
int $getDefaultViewDistanceChunks(::GraphicsMode graphicsMode) const;
337 MCAPI
int $getMaxViewDistanceChunks() const;
339 MCAPI
int $getMaxViewDistanceChunksRaw() const;
341 MCAPI
bool $getRayTracing() const;
343 MCAPI
bool $getDeferred() const;
345 MCAPI ::GamePadRemappingLayout& $getGamePadRemapping();
347 MCAPI ::std::shared_ptr<::KeyboardRemappingLayout> $getCurrentKeyboardRemapping() const;
349 MCAPI ::std::shared_ptr<::KeyboardRemappingLayout> $getKeyboardRemappingByType(::KeyboardType keyboardType) const;
351 MCAPI
void $setLanguage(::std::
string const& language);
353 MCAPI ::std::
string $getLanguage() const;
355 MCAPI
void $setPlayerViewPerspective(
int playerViewPerspective);
357 MCAPI
void $setRecentSkinIds(::std::vector<::std::
string> const& recentSkinIds);
359 MCAPI ::std::vector<::std::
string> const& $getRecentSkinIds();
361 MCAPI
float $getDefaultPlatformSafeZoneX() const;
363 MCAPI
float $getDefaultPlatformSafeZoneY() const;
365 MCAPI
bool $getServerboundClientDiagnosticsEnabled() const;
367 MCAPI ::ScriptDebuggerSettings $getScriptDebuggerSettings() const;
369 MCAPI ::Scripting::WatchdogSettings $getScriptWatchdogSettings() const;
371 MCAPI ::GraphicsMode $getGraphicsMode() const;
373 MCAPI
int $getGraphicsQualityPresetMode() const;
375 MCAPI
int $getDeferredTargetFrameRate() const;
377 MCAPI
void $setSaveDeferralCount(
int value);
379 MCAPI
int $getSaveDeferralCount() const;
381 MCAPI ::std::optional<::DeviceMemoryTier> $getScriptingMemoryTierOverride() const;
383 MCAPI
void $setForceVibrantVisualsDisabled(
bool value);
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 KeyboardRemappingLayout.h:5
Definition OptionsObserver.h:5
static MCAPI void ** $vftable()
Definition TaskGroup.h:53
Definition ChatOptions.h:5
Definition OptionSaveDeferral.h:5
Definition OptionValueInterface.h:5
Definition ScriptDebuggerSettings.h:8
Definition WatchdogSettings.h:7