3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/StoreNavigationOrigin.h"
7#include "mc/client/gui/screens/controllers/MarketplacePassTabIndex.h"
8#include "mc/client/gui/screens/controllers/SlotSelectedAction.h"
9#include "mc/client/gui/screens/models/IMainMenuScreenModel.h"
10#include "mc/client/gui/screens/models/InstantiationResult.h"
11#include "mc/client/gui/screens/models/MinecraftScreenModel.h"
12#include "mc/client/gui/screens/models/PlayScreenDefaultTab.h"
13#include "mc/client/network/NetworkFilter.h"
14#include "mc/client/social/MultiplayerServiceIdentifier.h"
15#include "mc/client/store/iap/PurchasePath.h"
16#include "mc/client/store/sidebar/Type.h"
17#include "mc/deps/core/threading/Async.h"
18#include "mc/deps/core/threading/SharedAsync.h"
19#include "mc/deps/core/threading/TaskGroup.h"
20#include "mc/deps/core/utility/NonOwnerPointer.h"
21#include "mc/identity/IdentityType.h"
22#include "mc/network/EditorConnectionJoinIntent.h"
23#include "mc/options/FeedbackType.h"
24#include "mc/platform/brstd/move_only_function.h"
25#include "mc/util/DownloadError.h"
26#include "mc/util/UploadState.h"
39class IStoreCatalogItem;
47class OfferCollectionComponent;
50class PlatformOfferTransactionContext;
54class RealmsTransactionContext;
59class SkinPickerUpsellTreatmentQuery;
60class StoreCatalogItem;
61class StoreCatalogRepository;
62class StoreSearchQuery;
63class TransactionContext;
76struct PlatformOfferPurchaseDetails;
78struct RealmsPurchaseDetails;
80struct SubmitItemRatingResult;
82namespace Bedrock::Http {
class Status; }
85namespace Core {
class Path; }
88namespace Realms {
struct RealmId; }
89namespace Realms {
struct World; }
93namespace Social {
class User; }
95namespace mce {
class UUID; }
102 ::ll::TypedStorage<8, 336, ::TaskGroup> mTaskGroup;
103 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::MinecoinCatalogModel>> mMinecoinCatalogModel;
104 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WorldSeedCatalogModel>> mWorldSeedCatalogModel;
105 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::WorldFileDownloadManager>> mFileDownloadManager;
106 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mFileUploadTaskGroup;
107 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Bedrock::Threading::SharedAsync<void>>> mPreviousUpload;
108 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ResourcePackPathLifetimeHelpers::ResourcePackPathCache>>
109 mResourcePackPathCache;
110 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::WorldTemplateManager>> mWorldTemplateManager;
111 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::AnnouncementSurface>> mLoginAnnouncementSurface;
112 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::AnnouncementSurface>> mMarketplaceAnnouncementSurface;
113 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DlcChecker>> mDlcChecker;
114 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::LegacyWorldConverter>> mLegacyWorldConverter;
119 MainMenuScreenModel();
124 virtual ~MainMenuScreenModel() ;
126 virtual void navigateToDlcProgressScreen(
127 ::std::vector<::DlcId>
const& dlcIds,
128 ::std::function<
void(
bool,
bool)> callback,
129 bool showCloseButton,
130 bool processingUpdates,
131 bool requireCancelToExit
134 virtual ::std::string
const& getLastPoppedScreenName() const ;
136 virtual ::Bedrock::NotNullNonOwnerPtr<::StoreCatalogRepository> getStoreCatalogRepository() const ;
138 virtual
bool doesPlatformSupportRealms() const ;
140 virtual
bool isSelectedSkinInitialized() const ;
142 virtual
void repopulateWorldTemplates() ;
144 virtual ::WorldTemplateInfo const* findWorldTemplateByUUID(::std::vector<::mce::UUID> const& packUUIDs) const
147 virtual
bool isPackIdInRealmsPlus(::std::
string const& packId) const ;
149 virtual
float getStoreNetworkFailureTimeout() const ;
151 virtual
bool isInGame() const ;
153 virtual ::IMinecraftEventing& getMinecraftEventing() const;
155 virtual
bool isAdhocEnabled() const ;
157 virtual
bool isNetworkEnabled(::NetworkFilter withFilter) const ;
159 virtual
bool platformTTSExists() const ;
165 MCAPI explicit MainMenuScreenModel(::MinecraftScreenModelContext context);
167 MCAPI
void _showAnnouncementIfAvailable(::Bedrock::NonOwnerPointer<::AnnouncementSurface> surface);
169 MCAPI
bool canDisableRecipeUnlockingAsDefault() const;
171 MCAPI
void cancelCreateRealmsWorld();
173 MCAPI
void checkAndPostUnpublishedRealmEventsToRealm(
174 ::Realms::RealmId realmId,
175 ::std::function<
void(::Realms::Stories::RealmEvent, ::Clubs::FeedItem)> onSuccessfulPostToRealm
178 MCAPI
bool checkStoreForAvailableUpdates() const;
180 MCAPI
void clearAllUserCache();
182 MCAPI
void clearScreenshotsCache();
184 MCAPI ::std::shared_ptr<::CatalogCollection>
185 createCatalogCollection(::std::vector<::std::shared_ptr<::SearchQuery>> const& queries,
int maxVisibleOffers);
187 MCAPI ::std::shared_ptr<::CatalogCollection>
188 createCatalogCollection(::StoreSearchQuery const& query,
int maxVisibleOffers);
190 MCAPI ::std::vector<::EDULibraryCategory> createLibraryCategoryPage(::std::vector<::std::
string> const& pages);
192 MCAPI ::std::shared_ptr<::LibraryCollection>
193 createLibraryCollection(::std::shared_ptr<::LibraryCollectionConfig> config);
195 MCAPI ::std::shared_ptr<::WorldFileDownloadManager> createLibraryWorldFileDownloadManager();
197 MCAPI ::std::shared_ptr<::ResourcePackFileUploadManager> createResourcePackFileUploadManager();
199 MCAPI ::std::shared_ptr<::WorldFileUploadManager> createWorldFileUploadManager();
201 MCAPI
void dismissNewPlayerFlow();
203 MCAPI
void fetchContentInRealmsPlus(::std::function<
void()> callback);
205 MCAPI
void fetchLibraryWorldSize(::std::shared_ptr<::LessonItem> lessonItem);
207 MCAPI
void forcePersonaServiceSync() const;
209 MCFOLD
bool fulfillPriorPlatformOfferPurchase(
210 ::std::weak_ptr<::Purchase> purchase,
211 ::std::unique_ptr<::PlatformOfferTransactionContext> context
214 MCFOLD
bool fulfillPriorRealmsPurchase(
215 ::std::weak_ptr<::Purchase> purchase,
216 ::std::unique_ptr<::RealmsTransactionContext> context
219 MCAPI ::Bedrock::NotNullNonOwnerPtr<::IContentAccessibilityProvider const> getAccessibilityProvider() const;
221 MCAPI ::EDULibraryCategory* getLibraryCategory(::std::
string const& name);
223 MCAPI ::MinecoinCatalogModel& getMinecoinCatalogModel();
225 MCFOLD ::Bedrock::Threading::Async<
bool> getNeedsOfflineAuthCode();
227 MCAPI ::std::string_view getNewPlayerFlowTargetRoute() const;
229 MCAPI ::std::shared_ptr<::Social::User> getPrimaryUser() const;
231 MCAPI ::std::shared_ptr<::Realms::Stories::FacetStateManager> const getRealmsStoriesFacetStateManager() const;
233 MCAPI ::std::shared_ptr<::Realms::RealmsWorldContext> const getRealmsWorldContext() const;
235 MCAPI ::SkinPackCollectionModel& getSkinPackCollection();
237 MCAPI ::std::shared_ptr<::SkinPickerUpsellTreatmentQuery>
238 getSkinPickerUpsellTreatmentQuery(::std::function<
void(::SearchQuery const*)> callback) const;
240 MCAPI ::StoreCatalogItem& getStoreCatalogItemByProductId(::std::
string const& productId);
242 MCAPI
bool getStoreRequiresRestoreButton() const;
244 MCAPI
bool getStoreShouldHideUpdateRow() const;
246 MCAPI
bool getStoreSupportsSubscriptions() const;
248 MCAPI ::std::
string getSunsettingText();
250 MCAPI
bool getUnfulfilledPlatformOfferPurchase(::PlatformOfferPurchaseDetails& details);
252 MCAPI
bool getUnfulfilledRealmsPurchase(::RealmsPurchaseDetails& details);
254 MCAPI
int getUserCoinBalance() const;
256 MCAPI ::std::
string getUserCoinBalanceAsString() const;
258 MCAPI ::WorldFileDownloadManager& getWorldFileDownloadManager();
260 MCAPI ::WorldSeedCatalogModel& getWorldSeedCatalogModel();
262 MCAPI
bool hasDismissedNewPlayerFlow() const;
264 MCAPI
bool hasSeenSonyTokensPopup() const;
266 MCAPI
void instantiateTemplate(
267 ::PackManifest const& manifest,
268 ::std::function<
void(::LevelSummary*, ::InstantiationResult)> callback
271 MCAPI
bool isAbleToFetch(
bool signInFailed) const;
273 MCAPI
bool isAppStoreReady() const;
275 MCAPI
bool isNewPlayerPathV3ABCTest() const;
277 MCAPI
bool isPlatformServiceMultiplayerConnected() const;
279 MCAPI
bool isRealmsCachedTrialAvailable() const;
281 MCAPI
bool isServiceMultiplayerAvailableAndConnected(::Social::MultiplayerServiceIdentifier service) const;
283 MCAPI
bool isSidebarNavigationLayoutActive(::sidebar::navigationLayout::Type layoutType) const;
285 MCAPI
void joinExperienceWorld(::ExperienceJoinRequestInfo const& connectionData);
287 MCAPI
void launchSunsettingUri();
289 MCAPI
void navigateToApplyResourcePacksScreen(::std::function<
void(::MinecraftScreenModel&)> applyPacks);
291 MCAPI
void navigateToBundleWarningScreen(
292 ::IStoreCatalogItem const& catalogItem,
293 ::OfferCollectionComponent const& bundle,
294 ::std::function<
void()> onPurchaseCallback
297 MCAPI
void navigateToChooseRealmScreen(
298 ::std::function<
void(::Realms::World)> callback,
299 ::SlotSelectedAction action,
300 ::std::function<
void()> onCancelCallback
303 MCAPI
void navigateToCoinPurchaseScreen(
304 ::std::
string const& coinPurchaseScreenPageId,
306 ::std::function<
void(
bool,
int)> callback
309 MCAPI
void navigateToCreateWorldUpsellScreen(
bool firstTimeShown, ::std::
string const& additionalScreenInfo);
311 MCAPI
void navigateToEDUFetchProgressHandler(::std::shared_ptr<::PlayScreenModel> model);
313 MCAPI
void navigateToEDUFetchServersProgressHandler(
314 ::Bedrock::NonOwnerPointer<::EDUServersScreenController> eduServersScreenController
317 MCAPI
void navigateToEDULibraryRoot();
319 MCAPI
void navigateToEDUPlayScreen();
321 MCAPI
void navigateToEDUServerResolvingProgressHandler(
322 ::Social::EduDedicatedServerDetails const& details,
323 ::std::
string const& passcode,
324 ::std::shared_ptr<::PlayScreenModel> model,
325 ::brstd::move_only_function<
void()>& reopenPasscodeEntry
328 MCAPI
void navigateToEDUServersScreen();
330 MCAPI
void navigateToEDUUploadProgressHandler(
331 ::std::
string const& levelId,
332 ::std::
string const& levelName,
333 ::Bedrock::NonOwnerPointer<::EduCloud::IEduCloudSaveSystem> eduCloudSaveSystem,
334 ::std::optional<::CloudSaveLevelInfo> cloudSaveInfo
337 MCAPI
void navigateToFeaturedWorld();
339 MCAPI
void navigateToFileDownloadScreenAsync(
340 uint64 estimatedDiskWriteSize,
341 ::std::
string const& realmID,
343 ::std::
string const& realmName,
344 ::std::
string const& realmVersion,
345 ::std::
string const& realmVersionName,
346 ::std::function<
void(
bool)> callback
349 MCAPI
void navigateToLibraryItemScreen(::std::shared_ptr<::LibraryItem> item);
351 MCAPI
void navigateToLibraryItemScreen(::std::
string itemId);
353 MCAPI
void navigateToLibrarySearchScreen(
354 ::std::shared_ptr<::LibraryCollection> collection,
355 ::std::
string const& libraryTitle,
356 ::std::
string const& libraryIcon
359 MCAPI
void navigateToLibraryTagScreen(
360 ::std::shared_ptr<::LibraryCollection> collection,
361 ::std::
string const& libraryTitle,
362 ::std::
string const& libraryIcon,
363 ::std::
string const& libraryPageDescription
366 MCAPI
void navigateToLibraryWorldScreen(
367 ::std::shared_ptr<::LibraryCollection> collection,
368 ::std::
string const& libraryTitle,
369 ::std::
string const& libraryIcon,
370 ::std::
string const& libraryPageDescription,
371 ::std::
string const& categoryTitle
374 MCAPI
void navigateToLocalWorldPickerScreen(
375 ::std::
string const& realmID,
377 ::std::function<
void(::UploadState, ::Realms::World)> callback
380 MCAPI
void navigateToManifestValidationScreen(
381 ::ResourceLocation const& resourceLocation,
382 ::std::shared_ptr<::PackContentItem const> const& contentItem
385 MCAPI
void navigateToMarketplacePassPDPScreen(
386 ::MarketplacePassTabIndex tabIndex,
387 ::sidebar::navigationLayout::Type sidebarLayoutType
390 MCAPI
void navigateToMarketplacePassPDPViewAllPacksScreen();
392 MCAPI
void navigateToOreUIChooseRealmSubscriptionScreen();
394 MCAPI
void navigateToOreUIRealmsCreatePreviewWithOnlyOneSubscriptionScreen();
396 MCAPI
void navigateToPackSettingsScreen(::PackSettingsInfo packSettingsInfo);
398 MCAPI
void navigateToPlayScreen(::PlayScreenDefaultTab tab);
400 MCAPI
void navigateToPromotionAction(::ExperiencePromotion const& promotion);
402 MCAPI
void navigateToPurchaseOfferScreen(::IStoreCatalogItem const& item, ::StoreNavigationOrigin origin,
bool);
404 MCAPI
void navigateToPurchaseOfferScreen(
405 ::std::
string const& productId,
406 ::StoreNavigationOrigin origin,
407 ::std::
string const&,
412 navigateToPurchaseOfferScreen(::mce::UUID const& uuid, ::StoreNavigationOrigin origin, ::std::
string const&,
bool);
415 navigateToRealmsAllowListScreen(::Realms::World const& world, ::std::function<
void()> followUpActionAfterCreation);
417 MCAPI
void navigateToRealmsCreateScreen(::RealmsCreateParams const& createParams);
419 MCAPI
bool navigateToRealmsOffers(::StoreDataDrivenScreenParams const& params);
421 MCAPI
void navigateToRealmsPDPViewAllPacksScreen();
423 MCAPI
void navigateToRealmsPlusPurchaseWarningScreen(::std::function<
void()> callback);
425 MCAPI
void navigateToRealmsWorldProgressScreen(
426 ::std::
string const& uniqueEventName,
427 ::std::unique_ptr<::ProgressHandler> connectHandler,
428 ::std::unique_ptr<::ProgressHandler> progressHandler,
429 ::std::function<
void()> onlineSafetyCancelledCallback
432 MCAPI
void navigateToStoreInventoryScreen();
434 MCAPI
void navigateToStoreSearchScreen(::std::
string const& searchText, ::std::
string const& mPackTypeFilter);
436 MCAPI
void navigateToStoreSearchScreen(
437 ::LinksToStyle const& linksToStyle,
438 ::std::
string const& searchText,
439 ::std::
string const& packTypeFilter
442 MCAPI
void navigateToSubmitFeedbackScreen(::FeedbackType feedbackType, ::std::
string const& identifier);
444 MCAPI
void navigateToSunsettingScreen(::std::
string title);
446 MCAPI
void navigateToUGCViewerScreen(
447 ::std::function<
void(::std::
string const&, ::std::
string const&, ::Core::Path const&)> closeCallback
450 MCAPI
void navigateToUploadPackFileProgressScreen(
451 ::std::
string const& realmID,
452 ::Core::Path const& path,
455 ::std::function<
void(::UploadState, ::Realms::World)> uploadPackCallback
459 navigateToWorldConversionCompleteScreen(::std::
string const& levelId, ::std::function<
void()> cancelCallback);
461 MCAPI ::std::unique_ptr<::DlcUIWrapper> newDlcUIWrapper(::MainMenuScreenController& controller);
463 MCAPI
void performPlayerSafetyScanRequest(
464 ::std::
string const& feedback,
465 ::std::function<
void(::Bedrock::Http::Status const&,
bool)> callback
468 MCAPI
bool prepareAppStoreForPurchases(::std::function<
void(
bool)> callback);
471 purchaseMarketplacePass(::std::
string const& productSku, ::std::unique_ptr<::TransactionContext>&& context);
473 MCAPI
bool purchasePlatformOffer(
474 ::PlatformOfferModel const& platformOfferModel,
475 ::std::unique_ptr<::TransactionContext>&& context,
479 MCAPI
void quickPlay();
481 MCAPI
void redeemRealmsCatalogOffer(::std::
string const& productId, ::std::function<
void(
bool)> outerCallback);
483 MCAPI
void refreshUserInventory() const;
485 MCAPI ::Bedrock::PubSub::Subscription
486 registerPrimaryUserSignInSubscriber(::std::function<
void(uint, ::Social::IdentityType)> listener);
488 MCFOLD ::Bedrock::Threading::Async<
bool> requestOfflineAuthCode();
490 MCAPI
void setDeepLinkListenerMainMenuParameters(::std::function<
void(::DownloadError const&)> onDownloadError);
492 MCAPI
void setEditorConnectionJoinIntent(::EditorConnectionJoinIntent editorConnectionJoinIntent);
494 MCAPI
void setHasSeenSonyTokenPopup(
bool newValue);
496 MCAPI
void setStoreCatalogItemViewed(::IStoreCatalogItem const& item) const;
498 MCAPI
void setStoreCatalogItemViewed(::std::
string const& productId) const;
500 MCAPI
void submitReviewFor(::std::
string const& productId,
int rating, ::std::function<
void()> successCallback);
502 MCAPI ::Bedrock::Threading::Async<::SubmitItemRatingResult>
503 submitReviewForEntitlementManager(::std::
string const& productId,
int rating);
505 MCAPI
bool supportsFliteTTS() const;
507 MCAPI
bool supportsXboxLiveAchievements() const;
509 MCAPI
void uploadLocalWorldFile(
510 ::std::
string const& realmID,
511 ::std::
string const& worldID,
513 ::std::function<
void(::UploadState, ::Realms::World)> callback
520 MCAPI
void* $ctor(::MinecraftScreenModelContext context);
532 MCAPI
void $navigateToDlcProgressScreen(
533 ::std::vector<::DlcId> const& dlcIds,
534 ::std::function<
void(
bool,
bool)> callback,
535 bool showCloseButton,
536 bool processingUpdates,
537 bool requireCancelToExit
540 MCAPI ::std::
string const& $getLastPoppedScreenName() const;
542 MCFOLD ::Bedrock::NotNullNonOwnerPtr<::StoreCatalogRepository> $getStoreCatalogRepository() const;
544 MCFOLD
bool $doesPlatformSupportRealms() const;
546 MCFOLD
bool $isSelectedSkinInitialized() const;
548 MCAPI
void $repopulateWorldTemplates();
550 MCAPI ::WorldTemplateInfo const* $findWorldTemplateByUUID(::std::vector<::mce::UUID> const& packUUIDs) const;
552 MCAPI
bool $isPackIdInRealmsPlus(::std::
string const& packId) const;
554 MCFOLD
float $getStoreNetworkFailureTimeout() const;
556 MCFOLD
bool $isInGame() const;
558 MCAPI ::IMinecraftEventing& $getMinecraftEventing() const;
560 MCAPI
bool $isAdhocEnabled() const;
562 MCAPI
bool $isNetworkEnabled(::NetworkFilter withFilter) const;
564 MCFOLD
bool $platformTTSExists() const;
Definition AnnouncementSurface.h:5
Definition Subscription.h:10
Definition CatalogCollection.h:5
Definition CloudSaveLevelInfo.h:10
Definition DlcChecker.h:5
Definition DlcUIWrapper.h:5
Definition IContentAccessibilityProvider.h:13
Definition IMainMenuScreenModel.h:5
Definition IMinecraftEventing.h:145
Definition LegacyWorldConverter.h:5
Definition LessonItem.h:5
Definition LibraryCollectionConfig.h:5
Definition LibraryCollection.h:5
Definition LibraryItem.h:5
Definition MainMenuScreenController.h:5
Definition MainMenuScreenModel.h:5
Definition MinecoinCatalogModel.h:5
Definition MinecraftScreenModel.h:5
Definition PackManifest.h:38
Definition PlayScreenModel.h:5
Definition ProgressHandler.h:5
Definition RealmsCreateParams.h:5
Definition RealmsWorldContext.h:7
Definition FacetStateManager.h:7
Definition RealmEvent.h:7
Definition ResourceLocation.h:15
Definition ResourcePackFileUploadManager.h:26
Definition ResourcePackPathCache.h:7
Definition SearchQuery.h:5
Definition SkinPackCollectionModel.h:5
Definition WorldFileDownloadManager.h:5
Definition WorldFileUploadManager.h:5
Definition WorldSeedCatalogModel.h:5
Definition WorldTemplateManager.h:21
Definition EDULibraryCategory.h:5
Definition IEduCloudSaveSystem.h:7
Definition ExperienceJoinRequestInfo.h:5
Definition LevelSummary.h:30
Definition MinecraftScreenModelContext.h:5
Definition PackContentItem.h:5
Definition PackSettingsInfo.h:5
Definition EduDedicatedServerDetails.h:15
Definition StoreDataDrivenScreenParams.h:5
Definition WorldTemplateInfo.h:12