LeviLamina
Loading...
Searching...
No Matches
WorldResourcePackHandler.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/screens/models/ContentType.h"
7#include "mc/client/world/IWorldResourcePackHandler.h"
8#include "mc/client/world/PackAction.h"
9#include "mc/client/world/PackActionError.h"
10#include "mc/client/world/PackDownloadError.h"
11#include "mc/client/world/PackStatus.h"
12#include "mc/client/world/PendingPackActionHash.h"
13#include "mc/client/world/WorldID.h"
14#include "mc/deps/core/utility/NonOwnerPointer.h"
15#include "mc/deps/core/utility/pub_sub/Subscription.h"
16#include "mc/resources/PackScope.h"
17
18// auto generated forward declare list
19// clang-format off
20class ContentView;
21class IContentManager;
25struct ContentItem;
26struct ContentViews;
28struct IEntitlementManager;
29struct LevelSummary;
31struct PackIdVersion;
32namespace World { class IWorldResourcePackDownloader; }
33namespace World { struct PackCheckResult; }
34namespace World { struct PackCollection; }
35namespace World { struct PackDetails; }
36namespace World { struct PackDownloadProgressInfo; }
37namespace World { struct PackViewAndItem; }
38namespace World { struct PendingPackActionKey; }
39namespace World { struct PendingPackActivation; }
40namespace World { struct PendingPackRemoval; }
41namespace World { struct WorldPacks; }
42// clang-format on
43
44namespace World {
45
46class WorldResourcePackHandler : public ::World::IWorldResourcePackHandler {
47public:
48 // WorldResourcePackHandler inner types declare
49 // clang-format off
50 struct Contexts;
51 // clang-format on
52
53 // WorldResourcePackHandler inner types define
54 struct Contexts {
55 public:
56 // member variables
57 // NOLINTBEGIN
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mContext;
59 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mGlobalContext;
60 // NOLINTEND
61
62 public:
63 // member functions
64 // NOLINTBEGIN
65 MCAPI ~Contexts();
66 // NOLINTEND
67
68 public:
69 // destructor thunk
70 // NOLINTBEGIN
71 MCFOLD void $dtor();
72 // NOLINTEND
73 };
74
75 using ConstContentItemPtr = ::std::shared_ptr<::ContentItem const>;
76
77 using ContentItemPtr = ::std::shared_ptr<::ContentItem>;
78
79public:
80 // member variables
81 // NOLINTBEGIN
82 ::ll::TypedStorage<8, 8, ::IContentManager&> mContentManager;
83 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IResourcePackRepository>> mResourcePackRepository;
84 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IEntitlementManager>> mEntitlementManager;
85 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IContentTierManager const>> mContentTierManager;
86 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::World::IWorldResourcePackDownloader>> mWorldResourcePackDownloader;
87 ::ll::TypedStorage<8, 8, ::IContentAcquisition&> mContentAcquisition;
88 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnSourcesReloadedSubscription;
89 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::World::WorldPacks>> mWorldPacks;
90 ::ll::TypedStorage<
91 8,
92 64,
93 ::std::unordered_map<
94 ::World::PendingPackActionKey,
95 ::std::variant<::World::PendingPackActivation, ::World::PendingPackRemoval>,
96 ::World::PendingPackActionHash,
97 ::std::equal_to<::World::PendingPackActionKey>>>
98 mPendingPackActions;
99 ::ll::TypedStorage<1, 1, bool> mIsEditorWorld;
100 ::ll::TypedStorage<8, 32, ::World::WorldID> mCurrentWorldID;
101 ::ll::TypedStorage<1, 1, bool> mDirty;
102 // NOLINTEND
103
104public:
105 // prevent constructor by default
106 WorldResourcePackHandler& operator=(WorldResourcePackHandler const&);
107 WorldResourcePackHandler(WorldResourcePackHandler const&);
108 WorldResourcePackHandler();
109
110public:
111 // virtual functions
112 // NOLINTBEGIN
113 virtual ~WorldResourcePackHandler() /*override*/;
114
115 virtual ::World::WorldPacks& loadPackContentForWorld(::LevelSummary const& levelSummary) /*override*/;
116
117 virtual ::World::PackCollection getWorldPackCollection(
118 ::LevelSummary const& levelSummary,
119 ::ContentType const contentType,
120 bool const isEduMode
121 ) /*override*/;
122
123 virtual ::std::optional<::World::PackActionError> activatePack(
124 ::LevelSummary const& levelSummary,
125 ::ContentType const contentType,
126 ::std::string const& packId,
127 bool const isEduMode,
128 bool const force
129 ) /*override*/;
130
131 virtual ::std::optional<::World::PackActionError> deactivatePack(
132 ::LevelSummary const& levelSummary,
133 ::ContentType const contentType,
134 ::std::string const& packId,
135 bool const isEduMode,
136 bool const force
137 ) /*override*/;
138
139 virtual ::std::optional<::World::PackActionError>
140 continuePackActivation(::LevelSummary const& levelSummary) /*override*/;
141
142 virtual ::std::optional<::World::PackActionError>
143 continuePackDeactivation(::LevelSummary const& levelSummary) /*override*/;
144
145 virtual void downloadPacks(
146 ::LevelSummary const& levelSummary,
147 ::std::vector<::std::string> const& packIds,
148 ::std::function<void()> onCompleteCallback,
149 ::std::function<void(::World::PackDownloadError)> onErrorCallback
150 ) /*override*/;
151
152 virtual ::World::PackDownloadProgressInfo getDownloadPackProgress() /*override*/;
153
154 virtual void
155 getDownloadingPackTitles(::std::function<void(::std::vector<::std::string>)> packTitlesCallback) /*override*/;
156
157 virtual void cancelDownloadPack() /*override*/;
158
159 virtual void getPackSizes(
160 ::LevelSummary const& levelSummary,
161 ::std::vector<::std::string> const& packIds,
162 ::std::function<void(uint64)> onCompleteCallback,
163 ::std::function<void(::World::PackActionError)> onErrorCallback
164 ) /*override*/;
165
166 virtual void savePacksData() /*override*/;
167
168 virtual bool hasNonAddonBehaviorPacks(::LevelSummary const& levelSummary) /*override*/;
169
170 virtual bool hasBehaviorPacks(::LevelSummary const& levelSummary) /*override*/;
171
172 virtual bool hasLockedPacks(::LevelSummary const& levelSummary) const /*override*/;
173
174 virtual ::std::optional<::World::PackActionError> changePackPriority(
175 ::LevelSummary const& levelSummary,
176 ::ContentType const contentType,
177 ::std::string const& packId,
178 int const fromIndex,
179 int const toIndex
180 ) /*override*/;
181
182 virtual ::World::PackCheckResult
183 checkDlc(::std::string const& levelId, ::PackIdVersion const& packIdVersion, bool const isForRealms) /*override*/;
184
185 virtual ::std::vector<::World::PackDetails> getPackDetailsForWorld(
186 ::LevelSummary const& levelSummary,
187 ::std::vector<::std::string> const& packIds
188 ) /*override*/;
189
190 virtual bool getResourcePacksDirty() /*override*/;
191
192 virtual void refreshPacksData() /*override*/;
193 // NOLINTEND
194
195public:
196 // member functions
197 // NOLINTBEGIN
198 MCAPI WorldResourcePackHandler(
199 ::IContentManager& contentManager,
200 ::Bedrock::NotNullNonOwnerPtr<::IResourcePackRepository> resourcePackRepository,
201 ::Bedrock::NotNullNonOwnerPtr<::IEntitlementManager> entitlementManager,
202 ::Bedrock::NotNullNonOwnerPtr<::IContentTierManager const> contentTierManager,
203 ::IContentAcquisition& contentAcquisition,
204 ::std::unique_ptr<::World::IWorldResourcePackDownloader> worldResourcePackDownloader
205 );
206
207 MCAPI ::World::WorldPacks&
208 _cacheWorldPackData(::World::WorldResourcePackHandler::Contexts&& contexts, ::LevelSummary const& levelSummary);
209
210 MCAPI ::std::unique_ptr<::ContentViews> _createContentViews(
211 ::World::WorldResourcePackHandler::Contexts& contexts,
212 ::ContentType contentType,
213 ::PackScope scope
214 ) const;
215
216 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem>
217 _findPackById(::World::WorldPacks& worldPacks, ::std::string const& packId) const;
218
219 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem>
220 _findPackByType(::World::WorldPacks& worldPacks, ::ContentType contentType, ::std::string const& packId) const;
221
222 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem> _findPackViewAndContent(
223 ::World::WorldPacks& worldPacks,
224 ::ContentType contentType,
225 ::World::PackStatus packStatus,
226 ::std::string const& packId
227 ) const;
228
229 MCAPI void _getMissingPackIds(
230 ::LevelSummary const& levelSummary,
231 ::std::vector<::std::string> const& packIds,
232 ::std::function<void(::World::PackActionError)> onErrorCallback,
233 ::std::function<void(::std::vector<::std::string> const&)> onCompleteCallback
234 );
235
236 MCAPI ::World::PackDetails _getPackDetails(
237 ::World::WorldID worldID,
238 ::std::shared_ptr<::ContentItem> const& contentItem,
239 ::ContentViews const& contentViews,
240 ::World::PackStatus packStatus,
241 bool isEduMode
242 );
243
244 MCAPI ::std::optional<::World::PackActionError> _getPackError(
245 ::World::WorldID worldID,
246 ::std::string packID,
247 ::std::shared_ptr<::ContentItem> const& contentItem,
248 ::ContentViews const& contentViews,
249 ::ContentType contentType,
250 ::World::PackStatus packStatus,
251 bool isEduMode
252 );
253
254 MCAPI ::World::PackActionError _handlePackMoveError(
255 ::World::WorldID const& worldID,
256 ::World::PackAction packAction,
257 ::std::string const& packId,
258 ::ContentType contentType,
259 bool isEduMode,
260 ::MoveResourcePackResult const& moveResourcePackResult,
261 bool onlyChecking
262 );
263
264 MCAPI ::World::WorldResourcePackHandler::Contexts
265 _initializeContentManagerForWorld(::LevelSummary const& levelSummary);
266
267 MCAPI bool _needToDownloadPack(::std::shared_ptr<::ContentItem> const& contentItem) const;
268
269 MCAPI ::std::optional<::World::PackActionError> _performPackMovement(
270 ::World::PackAction packAction,
271 ::LevelSummary const& levelSummary,
272 ::ContentType contentType,
273 ::std::string const& packId,
274 bool isEduMode,
275 bool force
276 );
277
278 MCAPI void _populatePackDetails(
279 ::World::WorldID worldID,
280 ::std::vector<::World::PackDetails>& packDetails,
281 ::Bedrock::NonOwnerPointer<::ContentView> contentView,
282 ::World::PackCollection const& packCollection,
283 ::ContentViews const& contentViews,
284 ::World::PackStatus packStatus,
285 bool isEduMode
286 );
287 // NOLINTEND
288
289public:
290 // constructor thunks
291 // NOLINTBEGIN
292 MCAPI void* $ctor(
293 ::IContentManager& contentManager,
294 ::Bedrock::NotNullNonOwnerPtr<::IResourcePackRepository> resourcePackRepository,
295 ::Bedrock::NotNullNonOwnerPtr<::IEntitlementManager> entitlementManager,
296 ::Bedrock::NotNullNonOwnerPtr<::IContentTierManager const> contentTierManager,
297 ::IContentAcquisition& contentAcquisition,
298 ::std::unique_ptr<::World::IWorldResourcePackDownloader> worldResourcePackDownloader
299 );
300 // NOLINTEND
301
302public:
303 // destructor thunk
304 // NOLINTBEGIN
305 MCAPI void $dtor();
306 // NOLINTEND
307
308public:
309 // virtual function thunks
310 // NOLINTBEGIN
311 MCAPI ::World::WorldPacks& $loadPackContentForWorld(::LevelSummary const& levelSummary);
312
313 MCAPI ::World::PackCollection
314 $getWorldPackCollection(::LevelSummary const& levelSummary, ::ContentType const contentType, bool const isEduMode);
315
316 MCAPI ::std::optional<::World::PackActionError> $activatePack(
317 ::LevelSummary const& levelSummary,
318 ::ContentType const contentType,
319 ::std::string const& packId,
320 bool const isEduMode,
321 bool const force
322 );
323
324 MCAPI ::std::optional<::World::PackActionError> $deactivatePack(
325 ::LevelSummary const& levelSummary,
326 ::ContentType const contentType,
327 ::std::string const& packId,
328 bool const isEduMode,
329 bool const force
330 );
331
332 MCAPI ::std::optional<::World::PackActionError> $continuePackActivation(::LevelSummary const& levelSummary);
333
334 MCAPI ::std::optional<::World::PackActionError> $continuePackDeactivation(::LevelSummary const& levelSummary);
335
336 MCAPI void $downloadPacks(
337 ::LevelSummary const& levelSummary,
338 ::std::vector<::std::string> const& packIds,
339 ::std::function<void()> onCompleteCallback,
340 ::std::function<void(::World::PackDownloadError)> onErrorCallback
341 );
342
343 MCAPI ::World::PackDownloadProgressInfo $getDownloadPackProgress();
344
345 MCAPI void $getDownloadingPackTitles(::std::function<void(::std::vector<::std::string>)> packTitlesCallback);
346
347 MCFOLD void $cancelDownloadPack();
348
349 MCAPI void $getPackSizes(
350 ::LevelSummary const& levelSummary,
351 ::std::vector<::std::string> const& packIds,
352 ::std::function<void(uint64)> onCompleteCallback,
353 ::std::function<void(::World::PackActionError)> onErrorCallback
354 );
355
356 MCAPI void $savePacksData();
357
358 MCAPI bool $hasNonAddonBehaviorPacks(::LevelSummary const& levelSummary);
359
360 MCAPI bool $hasBehaviorPacks(::LevelSummary const& levelSummary);
361
362 MCAPI bool $hasLockedPacks(::LevelSummary const& levelSummary) const;
363
364 MCAPI ::std::optional<::World::PackActionError> $changePackPriority(
365 ::LevelSummary const& levelSummary,
366 ::ContentType const contentType,
367 ::std::string const& packId,
368 int const fromIndex,
369 int const toIndex
370 );
371
372 MCAPI ::World::PackCheckResult
373 $checkDlc(::std::string const& levelId, ::PackIdVersion const& packIdVersion, bool const isForRealms);
374
375 MCAPI ::std::vector<::World::PackDetails>
376 $getPackDetailsForWorld(::LevelSummary const& levelSummary, ::std::vector<::std::string> const& packIds);
377
378 MCAPI bool $getResourcePacksDirty();
379
380 MCAPI void $refreshPacksData();
381 // NOLINTEND
382
383public:
384 // vftables
385 // NOLINTBEGIN
386 MCNAPI static void** $vftable();
387 // NOLINTEND
388};
389
390} // namespace World
Definition ContentView.h:5
Definition IContentManagerContext.h:5
Definition IContentManager.h:5
Definition IContentTierManager.h:13
Definition IResourcePackRepository.h:34
Definition IWorldResourcePackDownloader.h:7
Definition WorldResourcePackHandler.h:7
static MCAPI void ** $vftable()
Definition ContentItem.h:5
Definition ContentViews.h:5
Definition IContentAcquisition.h:5
Definition LevelSummary.h:30
Definition MoveResourcePackResult.h:5
Definition PackIdVersion.h:10
Definition PackCheckResult.h:7
Definition PackCollection.h:7
Definition PackDetails.h:7
Definition PackDownloadProgressInfo.h:7
Definition PackViewAndItem.h:7
Definition PendingPackActionKey.h:7
Definition PendingPackActivation.h:7
Definition PendingPackRemoval.h:7
Definition WorldPacks.h:7
Definition WorldResourcePackHandler.h:15