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