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/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"
28class IEntitlementManager;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mContext;
59 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IContentManagerContext>> mGlobalContext;
63 using ConstContentItemPtr = ::std::shared_ptr<::ContentItem const>;
65 using ContentItemPtr = ::std::shared_ptr<::ContentItem>;
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;
83 ::World::PendingPackActionKey,
84 ::std::variant<::World::PendingPackActivation, ::World::PendingPackRemoval>,
85 ::World::PendingPackActionHash,
86 ::std::equal_to<::World::PendingPackActionKey>>>
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;
96 WorldResourcePackHandler& operator=(WorldResourcePackHandler
const&);
97 WorldResourcePackHandler(WorldResourcePackHandler
const&);
98 WorldResourcePackHandler();
103 virtual ~WorldResourcePackHandler() =
default;
105 virtual ::World::WorldPacks& loadPackContentForWorld(::LevelSummary
const& levelSummary) ;
107 virtual ::World::PackCollection getWorldPackCollection(
108 ::LevelSummary
const& levelSummary,
109 ::ContentType
const contentType,
113 virtual ::std::optional<::World::PackActionError> activatePack(
114 ::LevelSummary
const& levelSummary,
115 ::ContentType
const contentType,
116 ::std::string
const& packId,
117 bool const isEduMode,
121 virtual ::std::optional<::World::PackActionError> deactivatePack(
122 ::LevelSummary
const& levelSummary,
123 ::ContentType
const contentType,
124 ::std::string
const& packId,
125 bool const isEduMode,
129 virtual ::std::optional<::World::PackActionError>
130 continuePackActivation(::LevelSummary
const& levelSummary) ;
132 virtual ::std::optional<::World::PackActionError>
133 continuePackDeactivation(::LevelSummary
const& levelSummary) ;
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
142 virtual ::World::PackDownloadProgressInfo getDownloadPackProgress() ;
145 getDownloadingPackTitles(::std::function<
void(::std::vector<::std::string>)> packTitlesCallback) ;
147 virtual void cancelDownloadPack() ;
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
156 virtual void savePacksData() ;
158 virtual void saveDirtyPacksData() ;
160 virtual bool hasNonAddonBehaviorPacks(::LevelSummary
const& levelSummary) ;
162 virtual bool hasBehaviorPacks(::LevelSummary
const& levelSummary) ;
164 virtual bool hasLockedPacks(::LevelSummary
const& levelSummary)
const ;
166 virtual ::std::optional<::World::PackActionError> changePackPriority(
167 ::LevelSummary
const& levelSummary,
168 ::ContentType
const contentType,
169 ::std::string
const& packId,
174 virtual ::World::PackCheckResult
175 checkDlc(::std::string
const& levelId, ::PackIdVersion
const& packIdVersion,
bool const isForRealms) ;
177 virtual ::std::vector<::World::PackDetails> getPackDetailsForWorld(
178 ::LevelSummary
const& levelSummary,
179 ::std::vector<::std::string>
const& packIds
182 virtual bool getResourcePacksDirty() ;
184 virtual void refreshPacksData() ;
190 MCAPI ::World::WorldPacks&
191 _cacheWorldPackData(::World::WorldResourcePackHandler::Contexts&& contexts, ::LevelSummary
const& levelSummary);
193 MCAPI ::std::unique_ptr<::ContentViews> _createContentViews(
194 ::World::WorldResourcePackHandler::Contexts& contexts,
195 ::ContentType contentType,
199 MCAPI ::std::variant<::World::PackActionError, ::World::PackViewAndItem> _findPackByType(
200 ::World::WorldPacks& worldPacks,
201 ::ContentType
const contentType,
202 ::std::string
const& packId
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
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
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,
227 MCAPI ::World::WorldResourcePackHandler::Contexts
228 _initializeContentManagerForWorld(::LevelSummary
const& levelSummary);
230 MCAPI
bool _needToDownloadPack(::std::shared_ptr<::ContentItem>
const& contentItem)
const;
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,
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,
255 MCAPI ::World::WorldPacks& $loadPackContentForWorld(::LevelSummary
const& levelSummary);
257 MCAPI ::World::PackCollection
258 $getWorldPackCollection(::LevelSummary
const& levelSummary, ::ContentType
const contentType,
bool const isEduMode);
260 MCAPI ::std::optional<::World::PackActionError> $activatePack(
261 ::LevelSummary
const& levelSummary,
262 ::ContentType
const contentType,
263 ::std::string
const& packId,
264 bool const isEduMode,
268 MCAPI ::std::optional<::World::PackActionError> $deactivatePack(
269 ::LevelSummary
const& levelSummary,
270 ::ContentType
const contentType,
271 ::std::string
const& packId,
272 bool const isEduMode,
276 MCAPI ::std::optional<::World::PackActionError> $continuePackActivation(::LevelSummary
const& levelSummary);
278 MCAPI ::std::optional<::World::PackActionError> $continuePackDeactivation(::LevelSummary
const& levelSummary);
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
287 MCAPI ::World::PackDownloadProgressInfo $getDownloadPackProgress();
289 MCAPI
void $getDownloadingPackTitles(::std::function<
void(::std::vector<::std::string>)> packTitlesCallback);
291 MCFOLD
void $cancelDownloadPack();
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
300 MCAPI
void $savePacksData();
302 MCAPI
void $saveDirtyPacksData();
304 MCAPI
bool $hasNonAddonBehaviorPacks(::LevelSummary
const& levelSummary);
306 MCAPI
bool $hasBehaviorPacks(::LevelSummary
const& levelSummary);
308 MCAPI
bool $hasLockedPacks(::LevelSummary
const& levelSummary)
const;
310 MCAPI ::std::optional<::World::PackActionError> $changePackPriority(
311 ::LevelSummary
const& levelSummary,
312 ::ContentType
const contentType,
313 ::std::string
const& packId,
318 MCAPI ::World::PackCheckResult
319 $checkDlc(::std::string
const& levelId, ::PackIdVersion
const& packIdVersion,
bool const isForRealms);
321 MCAPI ::std::vector<::World::PackDetails>
322 $getPackDetailsForWorld(::LevelSummary
const& levelSummary, ::std::vector<::std::string>
const& packIds);
324 MCAPI
bool $getResourcePacksDirty();
326 MCAPI
void $refreshPacksData();
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