3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/game/MinecraftGameFeatures.h"
7#include "mc/client/gui/SettingsModalType.h"
8#include "mc/client/gui/SettingsTabIndex.h"
9#include "mc/client/realms/PlayerRoleActions.h"
10#include "mc/client/storagemanager/ContentType.h"
11#include "mc/deps/core/file/PathBuffer.h"
12#include "mc/deps/core/string/BasicStackString.h"
13#include "mc/deps/core/utility/NonOwnerPointer.h"
14#include "mc/deps/input/InputBindingMode.h"
15#include "mc/deps/input/InputMode.h"
16#include "mc/deps/input/enums/ButtonState.h"
17#include "mc/deps/input/enums/RawInputType.h"
18#include "mc/options/FeatureOptionID.h"
19#include "mc/options/GraphicsMode.h"
35class StoreCatalogRepository;
43namespace Settings {
class Eventing; }
45namespace Social {
class User; }
49namespace Settings::RegistryBuilder {
54 using OnReload = ::std::function<void(::ContentItemCollection&)>;
59 virtual ~IBuilderContext() =
default;
61 virtual bool isPreGame()
const = 0;
63 virtual bool isSplitScreenActive()
const = 0;
65 virtual bool isPrimaryClient()
const = 0;
67 virtual bool isPlayerInEditor()
const = 0;
69 virtual bool isEditorModeOrInEditorWorld()
const = 0;
71 virtual ::IOptionRegistry& getOptions() = 0;
73 virtual ::IOptionRegistry
const& getOptions()
const = 0;
75 virtual int getClampedGuiScaleOffset()
const = 0;
77 virtual ::SoundOptions& getSoundOptions() = 0;
79 virtual ::Social::IGameConnectionInfoProvider
const& getGameConnectionInfoProvider()
const = 0;
81 virtual ::Settings::Eventing& getSettingsEventing() = 0;
83 virtual ::TrialManager& getTrialManager() = 0;
85 virtual ::MinecraftCommands& getCommands() = 0;
87 virtual ::InputSettingsHandler& getInputSettingsHandler()
const = 0;
89 virtual ::WorldSettingsRules
const& getWorldSettingsRules()
const = 0;
91 virtual ::std::optional<::std::string> getFeedbackUrl()
const = 0;
93 virtual bool supportsFullScreen()
const = 0;
95 virtual bool supportsUserDefinedSafeZone()
const = 0;
97 virtual int getRecommendedRenderDistance(::GraphicsMode graphicsMode)
const = 0;
99 virtual int getMaxGUIScaleIndex()
const = 0;
101 virtual int getOptimalGUIScaleIndex()
const = 0;
103 virtual ::InputMode getCurrentInputMode()
const = 0;
105 virtual ::Bedrock::PubSub::Subscription registerToUIScreenSizeChangedEvent(::std::function<
void()> callback) = 0;
107 virtual ::Bedrock::PubSub::Subscription
108 registerLevelChangedListener(::std::function<
void(::LevelDataWrapper&)> callback) = 0;
110 virtual ::Bedrock::PubSub::Subscription
111 registerToServerFormDataAvailableEvent(::std::function<
void()> callback) = 0;
113 virtual bool isServerFormDataAvailable()
const = 0;
115 virtual void pushRoute(::std::string_view route) = 0;
117 virtual void pushSettingsTabWithModal(::SettingsTabIndex tab, ::SettingsModalType modal) = 0;
119 virtual void pushToast(::std::string_view notification) = 0;
121 virtual bool supportsSetClipboard() = 0;
123 virtual void navigateToJsonSettingsTab(::SettingsTabIndex tab) = 0;
125 virtual void navigateToHowToPlayScreen() = 0;
127 virtual void setClipboardData(::std::string_view text) = 0;
129 virtual void launchURI(::std::string
const& uri) = 0;
131 virtual void navigateToPendingRealmInvites() = 0;
133 virtual void setInputBindingMode(::InputBindingMode mode) = 0;
135 virtual ::InputBindingMode getInputBindingMode()
const = 0;
137 virtual ::Bedrock::PubSub::Subscription
138 registerToRawInputEvent(::std::function<
void(
int, ::RawInputType, ::ButtonState,
bool)> callback) = 0;
140 virtual ::Bedrock::PubSub::Subscription registerToInputModeEvent(::std::function<
void(::InputMode)> callback) = 0;
142 virtual void navigateToCustomizeTouchControl() = 0;
144 virtual void refreshClientInputConfig() = 0;
146 virtual bool isGamePlayTipsEnabled()
const = 0;
148 virtual bool isSignedInToXBL()
const = 0;
150 virtual bool isEligibleForPauseFeature()
const = 0;
152 virtual bool supportsTTSLanguage(::std::string_view languageCode)
const = 0;
154 virtual bool isTTSEnabled()
const = 0;
156 virtual bool isMultiplayerClient()
const = 0;
158 virtual bool hasLocalPlayer()
const = 0;
160 virtual bool hasCommands()
const = 0;
162 virtual ::LevelDataWrapper& getLevelDataWrapper() = 0;
164 virtual ::PacketSender& getPacketSender() = 0;
166 virtual bool supportsKeyboardAndMouse()
const = 0;
168 virtual bool supportsGamepad()
const = 0;
170 virtual bool supportsTouch()
const = 0;
172 virtual bool isInRealms()
const = 0;
174 virtual bool isRealmsEnabled()
const = 0;
176 virtual bool isRealmsOwner()
const = 0;
178 virtual bool isRealmsFeatureEnabled(::std::string_view featureName)
const = 0;
180 virtual bool canUserDoActionForCurrentRealm(::Realms::PlayerRoleActions action)
const = 0;
182 virtual bool isConfigurableRealmsEnvironment()
const = 0;
184 virtual bool isPartySystemAvailable()
const = 0;
186 virtual bool isTrial()
const = 0;
188 virtual ::SettingsScreenCapabilities
const& getSettingsScreenCapabilities()
const = 0;
190 virtual bool isEduEdition()
const = 0;
192 virtual ::Bedrock::NotNullNonOwnerPtr<::IAdvancedGraphicsOptions> getAdvancedGraphicsOptions() = 0;
194 virtual void navigateToGammaCalibrationScreen() = 0;
196 virtual bool supportsAntiAliasing()
const = 0;
198 virtual bool supportsTextureStreaming()
const = 0;
200 virtual bool supportsTexelAntiAliasing()
const = 0;
202 virtual bool supportsAdvancedGraphics()
const = 0;
204 virtual bool supportsDeferredGraphics()
const = 0;
206 virtual bool supportsDeferredBlockLights()
const = 0;
208 virtual bool supportsDeferredPointLights()
const = 0;
210 virtual bool isDeferredTechnicalPreview()
const = 0;
212 virtual bool localLightConfigContainsPointLight()
const = 0;
214 virtual bool supportsImprovedInputResponse()
const = 0;
216 virtual bool supportsSplitScreen()
const = 0;
218 virtual bool isFeatureEnabled(::FeatureOptionID featureOptionId)
const = 0;
220 virtual bool isGameFeatureEnabled(::MinecraftGameFeatures feature)
const = 0;
222 virtual ::GameEditionProperties
const& getGameEditionProperties()
const = 0;
224 virtual ::std::optional<::std::reference_wrapper<::LocalPlayer>>
const getLocalPlayer()
const = 0;
226 virtual ::ProfanityContext
const& getProfanityContext()
const = 0;
228 virtual ::std::optional<::std::string> getMinecraftAccountId()
const = 0;
230 virtual void showUserSettings() = 0;
232 virtual ::std::string getDeviceId()
const = 0;
234 virtual bool shouldShowSignOutOfMicrosoftAccount()
const = 0;
236 virtual void signOutFromMicrosoftAccount() = 0;
238 virtual void clearSignInData() = 0;
240 virtual void navigateToDeleteMicrosoftAccount() = 0;
242 virtual bool shouldShowRequestPlaystationNetworkAuthorization()
const = 0;
244 virtual ::Bedrock::PubSub::Subscription
245 subscribeToShouldShowRequestPlaystationNetworkAuthorization(::std::function<
void()> callback) = 0;
247 virtual void requestPlaystationNetworkAuthorization() = 0;
249 virtual bool isConsolePlatform()
const = 0;
251 virtual bool isDesktopPlatform()
const = 0;
253 virtual ::std::shared_ptr<::Social::User>
const& getUser()
const = 0;
255 virtual void navigateToTabbedUpsell() = 0;
257 virtual bool needPlatformConnectionBeforeXBLSignIn()
const = 0;
259 virtual bool isWaitingForPlatformConnection()
const = 0;
261 virtual void navigateToPlatformNetworkConnectConfirmation(::std::function<
void(
bool)> callback) = 0;
263 virtual void navigateToXBLSignIn() = 0;
265 virtual void navigateToContentLogHistoryScreen() = 0;
267 virtual bool isSupportingFramePacing()
const = 0;
269 virtual bool doesFramePacingRequireVsync()
const = 0;
271 virtual void cancelAllDownloads()
const = 0;
273 virtual ::StoreCatalogRepository& getStoreCatalogRepository()
const = 0;
275 virtual ::std::shared_ptr<::SDL::SessionBinaries> getServiceSessionBinaries()
const = 0;
277 virtual ::Core::FilePathManager& getFilePathManager()
const = 0;
279 virtual void navigateToDeleteAreaProgressScreen(
280 ::std::string_view screenName,
281 ::std::chrono::seconds
const secondsBeforeUserCanCancel,
282 ::std::chrono::seconds
const secondsBeforeClientShouldCancel,
283 ::std::vector<::std::tuple<::Core::PathBuffer<::Core::BasicStackString<char, 1024>>, ::std::string>> paths,
284 ::std::function<
void()> completeCallback
287 virtual ::Bedrock::PubSub::Subscription registerToContentItemCollectionReload(
288 ::StorageManager::ContentType type,
289 ::std::function<
void(::ContentItemCollection&)> callback
292 virtual ::std::optional<::std::reference_wrapper<::ContentItemCollection>>
const
293 getVisibleContentItemCollection(::StorageManager::ContentType type)
const = 0;
295 virtual ::std::optional<::std::reference_wrapper<::StorageManager::WorldConverter>>
296 getStorageWorldConverter()
const = 0;
298 virtual void navigateToFetchLegacyWorldsScreen() = 0;
300 virtual bool isCloudStorageManagerEnabled()
const = 0;
302 virtual ::TaskGroup& getIOTaskGroup() = 0;
304 virtual ::Bedrock::NonOwnerPointer<::ContentLogFileEndPoint const> getContentLogFileEndPoint()
const = 0;
306 virtual ::std::string getCurrentContentLogFileName() = 0;
Definition Subscription.h:10
Definition ContentItemCollection.h:5
Definition ContentLogFileEndPoint.h:15
Definition FilePathManager.h:18
Definition GameEditionProperties.h:5
Definition IAdvancedGraphicsOptions.h:10
Definition IOptionRegistry.h:5
Definition LevelDataWrapper.h:5
Definition LocalPlayer.h:5
Definition MinecraftCommands.h:33
Definition PacketSender.h:17
Definition ProfanityContext.h:5
Definition SessionBinaries.h:7
Definition IBuilderContext.h:7
Definition IGameConnectionInfoProvider.h:12
Definition SoundOptions.h:5
Definition WorldConverter.h:7
Definition TaskGroup.h:86
Definition TrialManager.h:5
Definition WorldSettingsRules.h:5
Definition SettingsScreenCapabilities.h:8