Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
PersonaClient.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/persona/IPersonaClient.h"
7#include "mc/client/persona/SkinHandle.h"
8#include "mc/client/persona/SyncContext.h"
9#include "mc/client/persona/defaults/DefaultSkinType.h"
10#include "mc/client/services/persona/PersonaCharacterHandleArray.h"
11#include "mc/client/store/commerce/EntitlementChangeListener.h"
12#include "mc/deps/core/threading/SharedAsync.h"
13#include "mc/deps/core/utility/NonOwnerPointer.h"
14#include "mc/deps/core/utility/pub_sub/Subscription.h"
15#include "mc/world/actor/player/persona/PersonaCharacterHandle.h"
16#include "mc/world/actor/player/persona/ProfileType.h"
17
18// auto generated forward declare list
19// clang-format off
21class DateManager;
22class IClientInstance;
24class OptionRegistry;
27class PersonaService;
28class Skin;
29class SkinRepository;
30class TaskGroup;
31struct PersonaCharacter;
32namespace Social { class IUserManager; }
33namespace mce { class UUID; }
34namespace persona { struct CustomSkinUploadError; }
35namespace persona { struct FreeItemState; }
36namespace persona::color { class ColorInfo; }
37namespace persona::edu { class Context; }
38// clang-format on
39
40class PersonaClient : public ::IPersonaClient {
41public:
42 // PersonaClient inner types declare
43 // clang-format off
45 // clang-format on
46
47 // PersonaClient inner types define
48 enum class SyncSource : int {
49 Cache = 0,
50 Edu = 1,
51 Service = 2,
52 };
53
54 class SkinEntitlementChangeListener : public ::EntitlementChangeListener {
55 public:
56 // member variables
57 // NOLINTBEGIN
58 ::ll::TypedStorage<8, 8, ::PersonaClient*> mPersonaClient;
59 ::ll::TypedStorage<8, 16, ::std::weak_ptr<bool>> mExistanceTracker;
60 // NOLINTEND
61
62 public:
63 // virtual functions
64 // NOLINTBEGIN
65 virtual void _onEntitlementRefreshFinished() /*override*/;
66 // NOLINTEND
67
68 public:
69 // virtual function thunks
70 // NOLINTBEGIN
72 // NOLINTEND
73 };
74
75 using OnPersonaSyncedCallback = ::std::function<void()>;
76
77 using ColorInfo = ::persona::color::ColorInfo;
78
79 using CreatePersonaCallback = ::std::function<void(::std::string const&)>;
80
81public:
82 // member variables
83 // NOLINTBEGIN
84 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::SkinRepository>> mSkinRepository;
85 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CustomSkinManager>> mCustomSkinManager;
86 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
87 ::ll::TypedStorage<8, 8, ::PersonaRepository&> mPersonaRepository;
88 ::ll::TypedStorage<8, 16, ::gsl::not_null<::std::shared_ptr<::persona::edu::Context>>> mEduContext;
89 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager>> mUserManager;
90 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::DateManager const>> mDateManager;
91 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::PersonaService>> mPersonaService;
92 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::OptionRegistry>> mOptions;
93 ::ll::TypedStorage<8, 64, ::std::function<void()>> mOnPersonaSyncedCallback;
94 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mSkinUploadErrorSubscription;
95 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mXuidOptionSubscription;
96 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPlayfabUserSignInSubscription;
97 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mPlayfabUserSignOutSubscription;
98 ::ll::TypedStorage<8, 112, ::SkinHandle> mSelectedSkinHandle;
99 ::ll::TypedStorage<8, 112, ::SkinHandle> mPendingSelectedSkin;
100 ::ll::TypedStorage<1, 1, bool> mSelectedSkinInitialized;
101 ::ll::TypedStorage<4, 4, uint> mUserId;
102 ::ll::TypedStorage<8, 40, ::persona::PersonaCharacterHandle> mSendPacketForCharacterAfterSave;
103 ::ll::TypedStorage<4, 4, int> mControllerId;
104 ::ll::TypedStorage<8, 32, ::std::string> mXuid;
105 ::ll::TypedStorage<8, 16, ::Bedrock::Threading::SharedAsync<void>> mLastQueuedSync;
106 ::ll::TypedStorage<8, 16, ::std::shared_ptr<bool>> mExistanceTracker;
107 ::ll::TypedStorage<1, 1, bool> mUserUpdateInProcess;
108 ::ll::TypedStorage<8, 8, int64> mPersonaSyncStartTime;
109 ::ll::TypedStorage<1, 1, bool> mPersonaSyncInitialized;
110 ::ll::TypedStorage<1, 1, bool> mSelectedSkinInitializedNotTimedOut;
111 ::ll::TypedStorage<1, 1, bool> mCustomSkinCleanupDone;
112 ::ll::TypedStorage<8, 64, ::std::unordered_set<::persona::ProfileType>> mProcessingProfileTypes;
113 ::ll::TypedStorage<1, 1, ::persona::ProfileType> mCurrentProfileType;
114 ::ll::TypedStorage<1, 1, ::persona::ProfileType> mSelectedSlot;
115 ::ll::TypedStorage<8, 240, ::persona::PersonaCharacterHandleArray> mPersonaCharacterHandles;
116 ::ll::TypedStorage<8, 40, ::persona::PersonaCharacterHandle> mTemporaryPersonaHandle;
117 ::ll::TypedStorage<1, 1, bool> mPendingSplitScreenInitSkinUpdate;
118 ::ll::TypedStorage<8, 40, ::persona::SyncContext> mSyncContext;
119 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::PersonaClient::SkinEntitlementChangeListener>>
120 mEntitlementChangeListener;
121 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mTaskGroup;
122 ::ll::TypedStorage<1, 1, bool> mIsLegacySkinMissingEntitlement;
123 // NOLINTEND
124
125public:
126 // prevent constructor by default
127 PersonaClient& operator=(PersonaClient const&);
128 PersonaClient(PersonaClient const&);
129 PersonaClient();
130
131public:
132 // virtual functions
133 // NOLINTBEGIN
134 virtual ~PersonaClient() /*override*/ = default;
135
136 virtual bool isSelectedSkinPlatformLocked() const /*override*/;
137
138 virtual void sendNewPlayerSkinPacket(
139 ::persona::ProfileType const profileType,
140 ::std::string const& oldSkinName,
141 bool isClassicSkin
142 ) /*override*/;
143
144 virtual ::IPersonaRepository const& getPersonaRepository() const /*override*/;
145
146 virtual void savePersona(::persona::PersonaCharacterHandle const& characterHandle) /*override*/;
147
148 virtual void updateCharacterSkinData(
149 ::persona::PersonaCharacterHandle const& characterHandle,
150 ::SkinHandle const& handle
151 ) /*override*/;
152
153 virtual ::SkinHandle const& getSelectedSkinHandle() const /*override*/;
154
155 virtual void setPersonaLegacySlotSkin(::SkinHandle const& skin) const /*override*/;
156
157 virtual ::persona::PersonaCharacterHandle getCurrentCharacterHandle() const /*override*/;
158
159 virtual void createUpdatePersonaFromAppearance(
160 ::PersonaAppearance const& appearance,
161 ::persona::ProfileType profileType,
162 ::std::function<void(::SkinHandle)> syncCompleteCallback,
163 ::persona::PersonaCharacterHandle const& personaToUpdateHandle,
164 bool shouldNotifyService,
165 bool
166 ) /*override*/;
167 // NOLINTEND
168
169public:
170 // member functions
171 // NOLINTBEGIN
172 MCNAPI PersonaClient(
173 ::std::shared_ptr<::SkinRepository> skinRepository,
174 ::PersonaRepository& personaRepository,
175 ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager> userManager,
176 ::Bedrock::NotNullNonOwnerPtr<::DateManager const> dateManager,
177 ::Bedrock::NotNullNonOwnerPtr<::PersonaService> personaService,
178 ::std::weak_ptr<::OptionRegistry> options,
179 uint const& userId,
180 int const& controllerId,
181 ::IClientInstance& client,
182 ::std::function<void()> onPersonaSyncedCallback
183 );
184
186
187 MCNAPI ::std::function<void(::std::string const&)>
188 _constructCreatePersonaCallback(::persona::ProfileType const profileType, ::std::function<void()>&& callback);
189
190 MCNAPI void _createDefaultPersonaInSlot(::persona::ProfileType profileToPlace, int defaultIndexOverride);
191
193
194 MCNAPI ::SkinHandle _getAppearanceFromCharacter(::PersonaCharacter const& newCharacter) const;
195
196 MCNAPI void _handleCustomSkinUploadErrors(::std::vector<::persona::CustomSkinUploadError> const& errors);
197
198 MCNAPI void _handleNewScreen(::std::function<void(::std::string const&)> callback);
199
201 ::persona::PersonaCharacterHandle& activeCharacterHandle,
202 ::std::function<void(::std::string const&)> callback
203 );
204
206
207 MCNAPI void _onPlayFabSignIn(uint signedInLocalUserId);
208
209 MCNAPI void _registerGeoDefaultSkins(::persona::DefaultSkinType type);
210
211 MCNAPI void
212 _replaceSlotHandle(::persona::ProfileType profileType, ::persona::PersonaCharacterHandle const& newHandle);
213
214 MCNAPI void _runSync(::PersonaClient::SyncSource source);
215
216 MCNAPI void _setAppearanceOption(::Skin const* newAppearance);
217
219 ::Skin const* newAppearance,
220 bool notifyPersonaService,
221 ::std::function<void(::SkinHandle)> requestCallback
222 );
223
224 MCNAPI void _startInitForEdu(::std::string const& skinToUse);
225
227 ::SkinHandle const& newAppearanceHandle,
228 bool notifyPersonaService,
229 ::std::function<void(::SkinHandle)> callback
230 );
231
233
235
237 ::persona::PersonaCharacterHandle const& handle,
238 ::std::string const& pieceId,
239 ::persona::FreeItemState const& freeItemState,
240 int emoteWheelSlot,
241 ::std::function<void(bool)> callback
242 );
243
244 MCNAPI void
245 createPersona(::persona::ProfileType profileType, uint defaultAppearanceIndex, ::std::function<void()> callback);
246
247 MCNAPI void createPersona(
248 ::persona::ProfileType profileType,
249 ::mce::UUID const& defaultCharacterId,
250 ::std::function<void()> callback
251 );
252
253 MCNAPI void equipDefaultSkin();
254
256
257 MCNAPI ::Skin const& getDefaultSkin(::persona::DefaultSkinType type) const;
258
259 MCNAPI ::std::vector<::persona::ProfileType> getNonLegacyPersonaFilledSlots() const;
260
261 MCNAPI ::std::string getPlayFabIdFromUser();
262
263 MCNAPI ::std::string const& getSelectedProfileHash() const;
264
265 MCNAPI ::Skin const& getSelectedSkinForMultiplayer(bool checkOwnership) const;
266
267 MCNAPI ::Skin const& getSelectedSkinOrDefault(bool checkOwnership);
268
269 MCNAPI ::persona::PersonaCharacterHandle const& getTemporaryPersonaCharacterHandle(
270 ::persona::PersonaCharacterHandle& activeCharacterHandle,
271 ::std::function<void(::std::string const&)> callback
272 );
273
274 MCNAPI bool hasDefaultSkin(::persona::DefaultSkinType type) const;
275
276 MCNAPI bool isPersonaAppearanceLoading(int slot) const;
277
278 MCNAPI bool isSkinHandleDummySkin(::SkinHandle const& handle) const;
279
281
282 MCNAPI void setSelectedSkin(::Skin const* newSkin, ::std::function<void(::SkinHandle)> requestCallback);
283
284 MCNAPI void
285 setSelectedSkin(::std::string const& serializableName, ::std::function<void(::SkinHandle)> requestCallback);
286
287 MCNAPI void setSelectedSkinHandle(::SkinHandle const& skinHandle);
288
289 MCNAPI void setSelectedSkinToPersona(bool notifyPersonaService);
290
291 MCNAPI void tryFullPersonaReload(::persona::ProfileType profileType);
292
293 MCNAPI void updateClassicSkinCape(::persona::PersonaCharacterHandle const& handle);
294
296 ::persona::ProfileType profileType,
297 ::std::function<void(::SkinHandle)> syncCompleteCallback
298 );
299
301 ::PersonaAppearance const& newAppearance,
302 ::persona::PersonaCharacterHandle const& handle,
303 ::std::function<void(bool)> callback
304 );
305
306 MCNAPI void updateSelectedPersonaSkinSlot(::SkinHandle const& handle);
307 // NOLINTEND
308
309public:
310 // static functions
311 // NOLINTBEGIN
312 MCNAPI static ::SkinHandle getDefaultSkinHandle(::persona::DefaultSkinType defaultSkin);
313 // NOLINTEND
314
315public:
316 // static variables
317 // NOLINTBEGIN
318 MCNAPI static ::Skin& mInvalidSkin();
319 // NOLINTEND
320
321public:
322 // constructor thunks
323 // NOLINTBEGIN
324 MCNAPI void* $ctor(
325 ::std::shared_ptr<::SkinRepository> skinRepository,
326 ::PersonaRepository& personaRepository,
327 ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager> userManager,
328 ::Bedrock::NotNullNonOwnerPtr<::DateManager const> dateManager,
329 ::Bedrock::NotNullNonOwnerPtr<::PersonaService> personaService,
330 ::std::weak_ptr<::OptionRegistry> options,
331 uint const& userId,
332 int const& controllerId,
333 ::IClientInstance& client,
334 ::std::function<void()> onPersonaSyncedCallback
335 );
336 // NOLINTEND
337
338public:
339 // virtual function thunks
340 // NOLINTBEGIN
341 MCNAPI bool $isSelectedSkinPlatformLocked() const;
342
344 ::persona::ProfileType const profileType,
345 ::std::string const& oldSkinName,
346 bool isClassicSkin
347 );
348
350
351 MCNAPI void $savePersona(::persona::PersonaCharacterHandle const& characterHandle);
352
353 MCNAPI void
354 $updateCharacterSkinData(::persona::PersonaCharacterHandle const& characterHandle, ::SkinHandle const& handle);
355
356 MCNAPI ::SkinHandle const& $getSelectedSkinHandle() const;
357
358 MCNAPI void $setPersonaLegacySlotSkin(::SkinHandle const& skin) const;
359
360 MCNAPI ::persona::PersonaCharacterHandle $getCurrentCharacterHandle() const;
361
363 ::PersonaAppearance const& appearance,
364 ::persona::ProfileType profileType,
365 ::std::function<void(::SkinHandle)> syncCompleteCallback,
366 ::persona::PersonaCharacterHandle const& personaToUpdateHandle,
367 bool shouldNotifyService,
368 bool
369 );
370 // NOLINTEND
371};
Definition CustomSkinManager.h:5
Definition DateManager.h:14
Definition IClientInstance.h:5
Definition IPersonaClient.h:5
Definition IPersonaRepository.h:5
Definition OptionRegistry.h:5
Definition PersonaAppearance.h:5
Definition PersonaClient.h:5
MCAPI::std::string getPlayFabIdFromUser()
MCAPI ::std::function< void(::std::string const &)> _constructCreatePersonaCallback(::persona::ProfileType const profileType, ::std::function< void()> &&callback)
MCAPI::persona::PersonaCharacterHandle $getCurrentCharacterHandle() const
MCAPI void updatePersonaWithNewAppearance(::PersonaAppearance const &newAppearance, ::persona::PersonaCharacterHandle const &handle, ::std::function< void(bool)> callback)
MCAPI void equipDefaultSkin()
MCAPI void _onPlayFabSignIn(uint signedInLocalUserId)
MCAPI void updatePersonaFromAppearance(::persona::ProfileType profileType, ::std::function< void(::SkinHandle)> syncCompleteCallback)
static MCAPI ::SkinHandle getDefaultSkinHandle(::persona::DefaultSkinType defaultSkin)
MCAPI void changePersonaEmote(::persona::PersonaCharacterHandle const &handle, ::std::string const &pieceId, ::persona::FreeItemState const &freeItemState, int emoteWheelSlot, ::std::function< void(bool)> callback)
MCAPI ::std::vector<::persona::ProfileType > getNonLegacyPersonaFilledSlots() const
MCAPI bool arePlayerAnimationsReadyToRender() const
MCAPI::persona::PersonaCharacterHandle const & getTemporaryPersonaCharacterHandle(::persona::PersonaCharacterHandle &activeCharacterHandle, ::std::function< void(::std::string const &)> callback)
MCAPI void _createDefaultPersonaInSlot(::persona::ProfileType profileToPlace, int defaultIndexOverride)
MCAPI bool isSkinHandleDummySkin(::SkinHandle const &handle) const
MCAPI bool isPersonaAppearanceLoading(int slot) const
MCAPI bool $isSelectedSkinPlatformLocked() const
MCAPI void _setSelectedAppearance(::Skin const *newAppearance, bool notifyPersonaService, ::std::function< void(::SkinHandle)> requestCallback)
MCAPI void setSelectedSkinToPersona(bool notifyPersonaService)
MCAPI::SkinHandle const & $getSelectedSkinHandle() const
MCAPI void updateClassicSkinCape(::persona::PersonaCharacterHandle const &handle)
MCAPI::IPersonaRepository const & $getPersonaRepository() const
MCAPI void $updateCharacterSkinData(::persona::PersonaCharacterHandle const &characterHandle, ::SkinHandle const &handle)
MCAPI void _registerGeoDefaultSkins(::persona::DefaultSkinType type)
MCAPI void _firstTimePersonaSlotSetup()
static MCAPI ::Skin & mInvalidSkin()
MCAPI void createPersona(::persona::ProfileType profileType, uint defaultAppearanceIndex, ::std::function< void()> callback)
MCAPI::Skin const & getSelectedSkinOrDefault(bool checkOwnership)
MCAPI void _replaceSlotHandle(::persona::ProfileType profileType, ::persona::PersonaCharacterHandle const &newHandle)
MCAPI void $sendNewPlayerSkinPacket(::persona::ProfileType const profileType, ::std::string const &oldSkinName, bool isClassicSkin)
MCAPI void tryFullPersonaReload(::persona::ProfileType profileType)
MCAPI void _invalidatePersonaProfiles()
MCAPI void _handleReenteringScreen(::persona::PersonaCharacterHandle &activeCharacterHandle, ::std::function< void(::std::string const &)> callback)
MCAPI bool _canSendPlatformLockedSkinToCurrentConnection() const
MCAPI void _runSync(::PersonaClient::SyncSource source)
MCAPI void _startInitForEdu(::std::string const &skinToUse)
MCAPI bool hasDefaultSkin(::persona::DefaultSkinType type) const
MCAPI bool _updateSelectedPersonaProfileSkin()
MCAPI::SkinHandle _getAppearanceFromCharacter(::PersonaCharacter const &newCharacter) const
MCAPI void setSelectedSkinHandle(::SkinHandle const &skinHandle)
MCAPI::Skin const & getDefaultSkin(::persona::DefaultSkinType type) const
MCAPI void * $ctor(::std::shared_ptr<::SkinRepository > skinRepository, ::PersonaRepository &personaRepository, ::Bedrock::NotNullNonOwnerPtr<::Social::IUserManager > userManager, ::Bedrock::NotNullNonOwnerPtr<::DateManager const > dateManager, ::Bedrock::NotNullNonOwnerPtr<::PersonaService > personaService, ::std::weak_ptr<::OptionRegistry > options, uint const &userId, int const &controllerId, ::IClientInstance &client, ::std::function< void()> onPersonaSyncedCallback)
MCAPI void _handleNewScreen(::std::function< void(::std::string const &)> callback)
MCAPI void _setAppearanceOption(::Skin const *newAppearance)
MCAPI void setSelectedSkin(::Skin const *newSkin, ::std::function< void(::SkinHandle)> requestCallback)
MCAPI void $savePersona(::persona::PersonaCharacterHandle const &characterHandle)
MCAPI::Skin const & getSelectedSkinForMultiplayer(bool checkOwnership) const
MCAPI::std::string const & getSelectedProfileHash() const
MCAPI void _handleCustomSkinUploadErrors(::std::vector<::persona::CustomSkinUploadError > const &errors)
MCAPI void $setPersonaLegacySlotSkin(::SkinHandle const &skin) const
MCAPI void $createUpdatePersonaFromAppearance(::PersonaAppearance const &appearance, ::persona::ProfileType profileType, ::std::function< void(::SkinHandle)> syncCompleteCallback, ::persona::PersonaCharacterHandle const &personaToUpdateHandle, bool shouldNotifyService, bool)
MCAPI void _updateSelectedAppearance(::SkinHandle const &newAppearanceHandle, bool notifyPersonaService, ::std::function< void(::SkinHandle)> callback)
MCAPI void firePersonaInitializationCompleteEvent()
MCAPI void updateSelectedPersonaSkinSlot(::SkinHandle const &handle)
MCAPI void removeCurrentPersonaSlot()
Definition PersonaRepository.h:5
Definition PersonaService.h:5
Definition SkinHandle.h:5
Definition SkinRepository.h:5
Definition Skin.h:5
Definition IUserManager.h:7
Definition TaskGroup.h:85
Definition UUID.h:8
Definition ColorInfo.h:7
Definition Context.h:7
STL namespace.
Definition PersonaCharacter.h:5
Definition CustomSkinUploadError.h:7
Definition FreeItemState.h:7