3#include "mc/_HeaderOutputPredefine.h"
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"
28struct IEntitlementManager;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mContext;
59 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mGlobalContext;
75 using ConstContentItemPtr = ::std::shared_ptr<::ContentItem const>;
77 using ContentItemPtr = ::std::shared_ptr<::ContentItem>;
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;
94 ::World::PendingPackActionKey,
95 ::std::variant<::World::PendingPackActivation, ::World::PendingPackRemoval>,
96 ::World::PendingPackActionHash,
97 ::std::equal_to<::World::PendingPackActionKey>>>
99 ::ll::TypedStorage<1, 1, bool> mIsEditorWorld;
100 ::ll::TypedStorage<8, 32, ::World::WorldID> mCurrentWorldID;
101 ::ll::TypedStorage<1, 1, bool> mDirty;
106 WorldResourcePackHandler& operator=(WorldResourcePackHandler
const&);
107 WorldResourcePackHandler(WorldResourcePackHandler
const&);
108 WorldResourcePackHandler();
113 virtual ~WorldResourcePackHandler() ;
115 virtual ::World::WorldPacks& loadPackContentForWorld(::LevelSummary
const& levelSummary) ;
117 virtual ::World::PackCollection getWorldPackCollection(
118 ::LevelSummary
const& levelSummary,
119 ::ContentType
const contentType,
123 virtual ::std::optional<::World::PackActionError> activatePack(
124 ::LevelSummary
const& levelSummary,
125 ::ContentType
const contentType,
126 ::std::string
const& packId,
127 bool const isEduMode,
131 virtual ::std::optional<::World::PackActionError> deactivatePack(
132 ::LevelSummary
const& levelSummary,
133 ::ContentType
const contentType,
134 ::std::string
const& packId,
135 bool const isEduMode,
139 virtual ::std::optional<::World::PackActionError>
140 continuePackActivation(::LevelSummary
const& levelSummary) ;
142 virtual ::std::optional<::World::PackActionError>
143 continuePackDeactivation(::LevelSummary
const& levelSummary) ;
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
152 virtual ::World::PackDownloadProgressInfo getDownloadPackProgress() ;
155 getDownloadingPackTitles(::std::function<
void(::std::vector<::std::string>)> packTitlesCallback) ;
157 virtual void cancelDownloadPack() ;
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
166 virtual void savePacksData() ;
168 virtual bool hasNonAddonBehaviorPacks(::LevelSummary
const& levelSummary) ;
170 virtual bool hasBehaviorPacks(::LevelSummary
const& levelSummary) ;
172 virtual bool hasLockedPacks(::LevelSummary
const& levelSummary)
const ;
174 virtual ::std::optional<::World::PackActionError> changePackPriority(
175 ::LevelSummary
const& levelSummary,
176 ::ContentType
const contentType,
177 ::std::string
const& packId,
182 virtual ::World::PackCheckResult
183 checkDlc(::std::string
const& levelId, ::PackIdVersion
const& packIdVersion,
bool const isForRealms) ;
185 virtual ::std::vector<::World::PackDetails> getPackDetailsForWorld(
186 ::LevelSummary
const& levelSummary,
187 ::std::vector<::std::string>
const& packIds
190 virtual bool getResourcePacksDirty() ;
192 virtual void refreshPacksData() ;
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
207 MCAPI ::World::WorldPacks&
208 _cacheWorldPackData(::World::WorldResourcePackHandler::Contexts&& contexts, ::LevelSummary
const& levelSummary);
210 MCAPI ::std::unique_ptr<::ContentViews> _createContentViews(
211 ::World::WorldResourcePackHandler::Contexts& contexts,
212 ::ContentType contentType,
216 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem>
217 _findPackById(::World::WorldPacks& worldPacks, ::std::string
const& packId)
const;
219 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem>
220 _findPackByType(::World::WorldPacks& worldPacks, ::ContentType contentType, ::std::string
const& packId)
const;
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
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
236 MCAPI ::World::PackDetails _getPackDetails(
237 ::World::WorldID worldID,
238 ::std::shared_ptr<::ContentItem>
const& contentItem,
239 ::ContentViews
const& contentViews,
240 ::World::PackStatus packStatus,
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,
254 MCAPI ::World::PackActionError _handlePackMoveError(
255 ::World::WorldID
const& worldID,
256 ::World::PackAction packAction,
257 ::std::string
const& packId,
258 ::ContentType contentType,
260 ::MoveResourcePackResult
const& moveResourcePackResult,
264 MCAPI ::World::WorldResourcePackHandler::Contexts
265 _initializeContentManagerForWorld(::LevelSummary
const& levelSummary);
267 MCAPI
bool _needToDownloadPack(::std::shared_ptr<::ContentItem>
const& contentItem)
const;
269 MCAPI ::std::optional<::World::PackActionError> _performPackMovement(
270 ::World::PackAction packAction,
271 ::LevelSummary
const& levelSummary,
272 ::ContentType contentType,
273 ::std::string
const& packId,
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,
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
311 MCAPI ::World::WorldPacks& $loadPackContentForWorld(::LevelSummary
const& levelSummary);
313 MCAPI ::World::PackCollection
314 $getWorldPackCollection(::LevelSummary
const& levelSummary, ::ContentType
const contentType,
bool const isEduMode);
316 MCAPI ::std::optional<::World::PackActionError> $activatePack(
317 ::LevelSummary
const& levelSummary,
318 ::ContentType
const contentType,
319 ::std::string
const& packId,
320 bool const isEduMode,
324 MCAPI ::std::optional<::World::PackActionError> $deactivatePack(
325 ::LevelSummary
const& levelSummary,
326 ::ContentType
const contentType,
327 ::std::string
const& packId,
328 bool const isEduMode,
332 MCAPI ::std::optional<::World::PackActionError> $continuePackActivation(::LevelSummary
const& levelSummary);
334 MCAPI ::std::optional<::World::PackActionError> $continuePackDeactivation(::LevelSummary
const& levelSummary);
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
343 MCAPI ::World::PackDownloadProgressInfo $getDownloadPackProgress();
345 MCAPI
void $getDownloadingPackTitles(::std::function<
void(::std::vector<::std::string>)> packTitlesCallback);
347 MCFOLD
void $cancelDownloadPack();
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
356 MCAPI
void $savePacksData();
358 MCAPI
bool $hasNonAddonBehaviorPacks(::LevelSummary
const& levelSummary);
360 MCAPI
bool $hasBehaviorPacks(::LevelSummary
const& levelSummary);
362 MCAPI
bool $hasLockedPacks(::LevelSummary
const& levelSummary)
const;
364 MCAPI ::std::optional<::World::PackActionError> $changePackPriority(
365 ::LevelSummary
const& levelSummary,
366 ::ContentType
const contentType,
367 ::std::string
const& packId,
372 MCAPI ::World::PackCheckResult
373 $checkDlc(::std::string
const& levelId, ::PackIdVersion
const& packIdVersion,
bool const isForRealms);
375 MCAPI ::std::vector<::World::PackDetails>
376 $getPackDetailsForWorld(::LevelSummary
const& levelSummary, ::std::vector<::std::string>
const& packIds);
378 MCAPI
bool $getResourcePacksDirty();
380 MCAPI
void $refreshPacksData();
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