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 ::ll::TypedStorage<1, 1, bool> mWorldPacksDirty;
92 // NOLINTEND
93
94public:
95 // prevent constructor by default
96 WorldResourcePackHandler& operator=(WorldResourcePackHandler const&);
97 WorldResourcePackHandler(WorldResourcePackHandler const&);
98 WorldResourcePackHandler();
99
100public:
101 // virtual functions
102 // NOLINTBEGIN
103 virtual ~WorldResourcePackHandler() /*override*/ = default;
104
105 virtual ::World::WorldPacks& loadPackContentForWorld(::LevelSummary const& levelSummary) /*override*/;
106
107 virtual ::World::PackCollection getWorldPackCollection(
108 ::LevelSummary const& levelSummary,
109 ::ContentType const contentType,
110 bool const isEduMode
111 ) /*override*/;
112
113 virtual ::std::optional<::World::PackActionError> activatePack(
114 ::LevelSummary const& levelSummary,
115 ::ContentType const contentType,
116 ::std::string const& packId,
117 bool const isEduMode,
118 bool const force
119 ) /*override*/;
120
121 virtual ::std::optional<::World::PackActionError> deactivatePack(
122 ::LevelSummary const& levelSummary,
123 ::ContentType const contentType,
124 ::std::string const& packId,
125 bool const isEduMode,
126 bool const force
127 ) /*override*/;
128
129 virtual ::std::optional<::World::PackActionError>
130 continuePackActivation(::LevelSummary const& levelSummary) /*override*/;
131
132 virtual ::std::optional<::World::PackActionError>
133 continuePackDeactivation(::LevelSummary const& levelSummary) /*override*/;
134
135 virtual void downloadPacks(
136 ::LevelSummary const& levelSummary,
137 ::std::vector<::std::string> const& packIds,
138 ::std::function<void()> onCompleteCallback,
139 ::std::function<void(::World::PackDownloadError)> onErrorCallback
140 ) /*override*/;
141
142 virtual ::World::PackDownloadProgressInfo getDownloadPackProgress() /*override*/;
143
144 virtual void
145 getDownloadingPackTitles(::std::function<void(::std::vector<::std::string>)> packTitlesCallback) /*override*/;
146
147 virtual void cancelDownloadPack() /*override*/;
148
149 virtual void getPackSizes(
150 ::LevelSummary const& levelSummary,
151 ::std::vector<::std::string> const& packIds,
152 ::std::function<void(uint64)> onCompleteCallback,
153 ::std::function<void(::World::PackActionError)> onErrorCallback
154 ) /*override*/;
155
156 virtual void savePacksData() /*override*/;
157
158 virtual void saveDirtyPacksData() /*override*/;
159
160 virtual bool hasNonAddonBehaviorPacks(::LevelSummary const& levelSummary) /*override*/;
161
162 virtual bool hasBehaviorPacks(::LevelSummary const& levelSummary) /*override*/;
163
164 virtual bool hasLockedPacks(::LevelSummary const& levelSummary) const /*override*/;
165
166 virtual ::std::optional<::World::PackActionError> changePackPriority(
167 ::LevelSummary const& levelSummary,
168 ::ContentType const contentType,
169 ::std::string const& packId,
170 int const fromIndex,
171 int const toIndex
172 ) /*override*/;
173
174 virtual ::World::PackCheckResult
175 checkDlc(::std::string const& levelId, ::PackIdVersion const& packIdVersion, bool const isForRealms) /*override*/;
176
177 virtual ::std::vector<::World::PackDetails> getPackDetailsForWorld(
178 ::LevelSummary const& levelSummary,
179 ::std::vector<::std::string> const& packIds
180 ) /*override*/;
181
182 virtual bool getResourcePacksDirty() /*override*/;
183
184 virtual void refreshPacksData() /*override*/;
185 // NOLINTEND
186
187public:
188 // member functions
189 // NOLINTBEGIN
190 MCAPI ::World::WorldPacks&
191 _cacheWorldPackData(::World::WorldResourcePackHandler::Contexts&& contexts, ::LevelSummary const& levelSummary);
192
193 MCAPI ::std::unique_ptr<::ContentViews> _createContentViews(
194 ::World::WorldResourcePackHandler::Contexts& contexts,
195 ::ContentType contentType,
196 ::PackScope scope
197 ) const;
198
199 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem> _findPackByType(
200 ::World::WorldPacks& worldPacks,
201 ::ContentType const contentType,
202 ::std::string const& packId
203 ) const;
204
205 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem> _findPackViewAndContent(
206 ::World::WorldPacks& worldPacks,
207 ::ContentType const contentType,
208 ::World::PackStatus const packStatus,
209 ::std::string const& packId
210 ) const;
211
212 MCAPI void _getMissingPackIds(
213 ::LevelSummary const& levelSummary,
214 ::std::vector<::std::string> const& packIds,
215 ::std::function<void(::World::PackActionError)> onErrorCallback,
216 ::std::function<void(::std::vector<::std::string> const&)> onCompleteCallback
217 );
218
219 MCAPI ::World::PackDetails _getPackDetails(
220 ::World::WorldID const worldID,
221 ::std::shared_ptr<::ContentItem> const& contentItem,
222 ::ContentViews const& contentViews,
223 ::World::PackStatus const packStatus,
224 bool const isEduMode
225 );
226
227 MCAPI ::World::WorldResourcePackHandler::Contexts
228 _initializeContentManagerForWorld(::LevelSummary const& levelSummary);
229
230 MCAPI bool _needToDownloadPack(::std::shared_ptr<::ContentItem> const& contentItem) const;
231
232 MCAPI ::std::optional<::World::PackActionError> _performPackMovement(
233 ::World::PackAction const packAction,
234 ::LevelSummary const& levelSummary,
235 ::ContentType const contentType,
236 ::std::string const& packId,
237 bool const isEduMode,
238 bool const force
239 );
240
241 MCAPI void _populatePackDetails(
242 ::World::WorldID const worldID,
243 ::std::vector<::World::PackDetails>& packDetails,
244 ::Bedrock::NonOwnerPointer<::ContentView> contentView,
245 ::World::PackCollection const& packCollection,
246 ::ContentViews const& contentViews,
247 ::World::PackStatus const packStatus,
248 bool const isEduMode
249 );
250 // NOLINTEND
251
252public:
253 // virtual function thunks
254 // NOLINTBEGIN
255 MCAPI ::World::WorldPacks& $loadPackContentForWorld(::LevelSummary const& levelSummary);
256
257 MCAPI ::World::PackCollection
258 $getWorldPackCollection(::LevelSummary const& levelSummary, ::ContentType const contentType, bool const isEduMode);
259
260 MCAPI ::std::optional<::World::PackActionError> $activatePack(
261 ::LevelSummary const& levelSummary,
262 ::ContentType const contentType,
263 ::std::string const& packId,
264 bool const isEduMode,
265 bool const force
266 );
267
268 MCAPI ::std::optional<::World::PackActionError> $deactivatePack(
269 ::LevelSummary const& levelSummary,
270 ::ContentType const contentType,
271 ::std::string const& packId,
272 bool const isEduMode,
273 bool const force
274 );
275
276 MCAPI ::std::optional<::World::PackActionError> $continuePackActivation(::LevelSummary const& levelSummary);
277
278 MCAPI ::std::optional<::World::PackActionError> $continuePackDeactivation(::LevelSummary const& levelSummary);
279
280 MCAPI void $downloadPacks(
281 ::LevelSummary const& levelSummary,
282 ::std::vector<::std::string> const& packIds,
283 ::std::function<void()> onCompleteCallback,
284 ::std::function<void(::World::PackDownloadError)> onErrorCallback
285 );
286
287 MCAPI ::World::PackDownloadProgressInfo $getDownloadPackProgress();
288
289 MCAPI void $getDownloadingPackTitles(::std::function<void(::std::vector<::std::string>)> packTitlesCallback);
290
291 MCFOLD void $cancelDownloadPack();
292
293 MCAPI void $getPackSizes(
294 ::LevelSummary const& levelSummary,
295 ::std::vector<::std::string> const& packIds,
296 ::std::function<void(uint64)> onCompleteCallback,
297 ::std::function<void(::World::PackActionError)> onErrorCallback
298 );
299
300 MCAPI void $savePacksData();
301
302 MCAPI void $saveDirtyPacksData();
303
304 MCAPI bool $hasNonAddonBehaviorPacks(::LevelSummary const& levelSummary);
305
306 MCAPI bool $hasBehaviorPacks(::LevelSummary const& levelSummary);
307
308 MCAPI bool $hasLockedPacks(::LevelSummary const& levelSummary) const;
309
310 MCAPI ::std::optional<::World::PackActionError> $changePackPriority(
311 ::LevelSummary const& levelSummary,
312 ::ContentType const contentType,
313 ::std::string const& packId,
314 int const fromIndex,
315 int const toIndex
316 );
317
318 MCAPI ::World::PackCheckResult
319 $checkDlc(::std::string const& levelId, ::PackIdVersion const& packIdVersion, bool const isForRealms);
320
321 MCAPI ::std::vector<::World::PackDetails>
322 $getPackDetailsForWorld(::LevelSummary const& levelSummary, ::std::vector<::std::string> const& packIds);
323
324 MCAPI bool $getResourcePacksDirty();
325
326 MCAPI void $refreshPacksData();
327 // NOLINTEND
328};
329
330} // 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:147
Definition IResourcePackRepository.h:35
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