LeviLamina
Loading...
Searching...
No Matches
RealmWorldJoiner.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/screens/ProgressScreenNavigation.h"
7#include "mc/client/network/realms/FailureReason.h"
8#include "mc/client/network/realms/GenericStatus.h"
9#include "mc/client/network/realms/RealmsAPI.h"
10#include "mc/client/world/JoinRealmWorldResult.h"
11#include "mc/deps/core/http/StatusCode.h"
12#include "mc/deps/core/utility/NonOwnerPointer.h"
13#include "mc/deps/core/utility/pub_sub/Publisher.h"
14#include "mc/events/IMinecraftEventing.h"
15
16// auto generated forward declare list
17// clang-format off
18class AsyncTracker;
19class IAppPlatform;
20class IClientInstance;
23class ProgressHandler;
24class RealmsAPI;
26namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
27namespace Parties { class IPartyProvider; }
28namespace Realms { struct RealmId; }
29namespace Realms { struct World; }
30namespace Social { class GameConnectionInfo; }
31namespace Social { class IUserManager; }
32namespace World { struct RealmsJoinData; }
33// clang-format on
34
35namespace World {
36
37class RealmWorldJoiner {
38public:
39 // member variables
40 // NOLINTBEGIN
41 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
42 ::ll::TypedStorage<8, 8, ::INetworkGameConnector&> mNetworkGameConnector;
43 ::ll::TypedStorage<8, 8, ::IGameServerShutdown&> mGameServerShutdown;
44 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mMinecraftEventing;
45 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::RealmsAPI>> mRealmsAPI;
46 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::Social::IUserManager>> mUserManager;
47 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IAppPlatform>> mAppPlatform;
48 ::ll::TypedStorage<
49 8,
50 128,
51 ::Bedrock::PubSub::
52 Publisher<void(::World::JoinRealmWorldResult), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
53 mJoinRealmWorldResultPublisher;
54 ::ll::TypedStorage<8, 104, ::ui::ProgressScreenNavigation> mProgressScreenNavigation;
55 ::ll::TypedStorage<8, 64, ::std::function<::Bedrock::NonOwnerPointer<::Parties::IPartyProvider>()>>
56 mGetPartyProvider;
57 ::ll::TypedStorage<8, 64, ::std::function<bool(::Realms::RealmId)>> mIsRealmJoinable;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AsyncTracker>> mAsyncTracker;
59 ::ll::TypedStorage<1, 1, bool> mJoinRealmWorldInProgress;
60 ::ll::TypedStorage<1, 1, bool> mIsEditorMode;
61 // NOLINTEND
62
63public:
64 // prevent constructor by default
65 RealmWorldJoiner& operator=(RealmWorldJoiner const&);
66 RealmWorldJoiner(RealmWorldJoiner const&);
67 RealmWorldJoiner();
68
69public:
70 // member functions
71 // NOLINTBEGIN
72 MCAPI RealmWorldJoiner(
73 ::IClientInstance& client,
74 ::INetworkGameConnector& networkGameConnector,
75 ::IGameServerShutdown& gameServerShutdown,
76 ::IMinecraftEventing& minecraftEventing,
77 ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager> const& userManager,
78 ::Bedrock::NonOwnerPointer<::IAppPlatform> const& appPlatform,
79 ::std::weak_ptr<::RealmsAPI> realmsAPI,
80 ::ui::ProgressScreenNavigation progressScreenNavigation,
81 ::std::function<::Bedrock::NonOwnerPointer<::Parties::IPartyProvider>()> getPartyProvider,
82 ::std::function<bool(::Realms::RealmId)>&& isRealmJoinable
83 );
84
85 MCAPI ::World::JoinRealmWorldResult _fetchWorldByRealmId(
86 ::Realms::RealmId realmId,
87 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
88 ::std::function<void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
89 onRealmFetched,
90 ::std::function<void(
91 ::IMinecraftEventing::RealmConnectionResult,
92 ::std::optional<::Realms::FailureReason>,
93 ::std::optional<::World::RealmsJoinData>
94 )> onRealmJoined
95 );
96
97 MCAPI ::std::optional<::std::string> _getPartyId();
98
99 MCAPI void _handleFetchedWorldResult(
100 ::Realms::GenericStatus status,
101 ::Realms::World world,
102 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
103 ::std::function<void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
104 onRealmFetched,
105 ::std::function<void(
106 ::IMinecraftEventing::RealmConnectionResult,
107 ::std::optional<::Realms::FailureReason>,
108 ::std::optional<::World::RealmsJoinData>
109 )> onRealmJoined
110 );
111
112 MCAPI void _handleFetchedWorldResultV2(
113 ::std::string const& realmId,
114 ::Realms::GenericStatus status,
115 ::Realms::World world,
116 ::IMinecraftEventing::RealmConnectionFlow fromFlow
117 );
118
119 MCAPI bool _isUserWorldOwner(::Realms::World const& world) const;
120
121 MCAPI void _joinRealm(
122 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
123 ::Realms::World& world,
124 ::std::function<void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
125 onRealmFetchedCallback,
126 ::std::function<void(
127 ::IMinecraftEventing::RealmConnectionResult,
128 ::std::optional<::Realms::FailureReason>,
129 ::std::optional<::World::RealmsJoinData>
130 )> onRealmJoinedCallback
131 );
132
133 MCAPI void _joinRealmConnectionHandler(
134 ::IMinecraftEventing::RealmConnectionResult result,
135 ::std::optional<::Realms::FailureReason> failureReason,
136 ::std::optional<::World::RealmsJoinData> realmsJoinData,
137 ::std::optional<::std::string> realmId
138 );
139
140 MCAPI void _joinRealmsWorld(
141 ::Realms::World world,
142 ::std::function<void(::Social::GameConnectionInfo const&, bool)> successCallback,
143 ::std::function<void(::Realms::GenericStatus, ::RealmsAPI::JoinStatus, ::Realms::FailureReason)> failCallback,
144 ::std::function<void(int)> retryCallback,
145 ::IMinecraftEventing::RealmConnectionFlow realmConnectionFlow,
146 ::std::function<void(::IMinecraftEventing::RealmConnectionFlow)> broadcastConnectionEventRealmsRequestFunction,
147 ::std::function<void(::IMinecraftEventing::RealmConnectionFlow, ::Bedrock::Http::StatusCode)>
148 broadcastConnectionEventRealmsResponseFunction
149 );
150
151 MCAPI bool _shouldShowHardcoreWarning() const;
152
153 MCAPI void joinRealmWorld(
154 ::Realms::RealmId realmId,
155 ::IMinecraftEventing::RealmConnectionFlow fromFlow,
156 ::std::function<void(::World::JoinRealmWorldResult)> onRealmResult,
157 ::std::function<void(::std::unique_ptr<::ProgressHandler>, ::std::unique_ptr<::ProgressHandler>)>
158 onRealmFetched,
159 ::std::function<void(
160 ::IMinecraftEventing::RealmConnectionResult,
161 ::std::optional<::Realms::FailureReason>,
162 ::std::optional<::World::RealmsJoinData>
163 )> onRealmJoined
164 );
165
166 MCAPI void joinRealmWorldV2(::std::string const& realmIdString, ::IMinecraftEventing::RealmConnectionFlow fromFlow);
167
168 MCAPI ~RealmWorldJoiner();
169 // NOLINTEND
170
171public:
172 // constructor thunks
173 // NOLINTBEGIN
174 MCAPI void* $ctor(
175 ::IClientInstance& client,
176 ::INetworkGameConnector& networkGameConnector,
177 ::IGameServerShutdown& gameServerShutdown,
178 ::IMinecraftEventing& minecraftEventing,
179 ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager> const& userManager,
180 ::Bedrock::NonOwnerPointer<::IAppPlatform> const& appPlatform,
181 ::std::weak_ptr<::RealmsAPI> realmsAPI,
182 ::ui::ProgressScreenNavigation progressScreenNavigation,
183 ::std::function<::Bedrock::NonOwnerPointer<::Parties::IPartyProvider>()> getPartyProvider,
184 ::std::function<bool(::Realms::RealmId)>&& isRealmJoinable
185 );
186 // NOLINTEND
187
188public:
189 // destructor thunk
190 // NOLINTBEGIN
191 MCAPI void $dtor();
192 // NOLINTEND
193};
194
195} // namespace World
Definition AsyncTracker.h:5
Definition IAppPlatform.h:15
Definition IClientInstance.h:5
Definition IMinecraftEventing.h:134
Definition INetworkGameConnector.h:5
Definition IPartyProvider.h:7
Definition ProgressHandler.h:5
Definition RealmsAPI.h:5
Definition GameConnectionInfo.h:21
Definition IUserManager.h:34
Definition RealmWorldJoiner.h:7
Definition MultiThreaded.h:12
Definition IGameServerShutdown.h:5
Definition RealmId.h:7
Definition World.h:7
Definition RealmsJoinData.h:7