3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/screens/models/ContentFlags.h"
7#include "mc/client/gui/screens/models/ContentType.h"
8#include "mc/deps/core/file/PathBuffer.h"
9#include "mc/deps/core/resource/PackType.h"
10#include "mc/deps/core/threading/Async.h"
11#include "mc/deps/core/utility/NonOwnerPointer.h"
30namespace Realms {
struct Content; }
31namespace Realms {
struct RealmId; }
35namespace mce {
class UUID; }
41 using ConstContentItemPtr = ::std::shared_ptr<::ContentItem const>;
43 using ContentItemPtr = ::std::shared_ptr<::ContentItem>;
45 using PackContentItemPtr = ::std::shared_ptr<::PackContentItem>;
50 virtual ~IContentManager() =
default;
52 virtual ::ContentSource* loadContent(::ContentType contentType, ::ContentFlags flags) = 0;
54 virtual ::ContentSource* loadContent(::InvalidPacksFilterGroup
const& invalidFilter) = 0;
56 virtual ::ContentSource*
57 loadContentForLevel(::std::string
const& levelId, ::mce::UUID
const& premiumTemplateId) = 0;
59 virtual ::ContentSource* loadContentForRealm(int64
const realmId) = 0;
61 virtual ::std::unique_ptr<::ContentSource>
62 loadContentForRealmsWorld(::Realms::RealmId realmId, ::std::vector<::Realms::Content>
const& servicePackData) = 0;
64 virtual void addPackSourceFromPremiumTemplate(
65 ::RealmPackManagerContentSource* source,
66 ::mce::UUID
const& premiumTemplateId,
70 virtual void addRealmsUnknownPackSources(::RealmPackManagerContentSource* contentSource) = 0;
72 virtual void addPacksToRealmsUnknownPackSource(::std::unique_ptr<::Pack> pack) = 0;
74 virtual void addCachedHostPackIdProvider(::std::weak_ptr<::CachedHostPackIdProvider> provider) = 0;
76 virtual void clearRealmsUnknownPackSource() = 0;
78 virtual void removeUnneededItemFromRealmsUnknownContentSource(::mce::UUID
const&
id) = 0;
80 virtual ::gsl::not_null<::std::shared_ptr<::ContentItemCollection>>
81 getGlobalResourcePackCollection(
bool isEditorMode) = 0;
83 virtual ::std::unique_ptr<::IContentManagerContext>
84 createContext(::std::function<
bool(::std::shared_ptr<::ContentItem const>
const&)> contextPredicate) = 0;
86 virtual void removeContext(::IContentManagerContext& context) = 0;
88 virtual ::std::vector<::std::unique_ptr<::ContentSource>>
const& getSources()
const = 0;
90 virtual ::std::vector<::std::shared_ptr<::ContentItem>> getContentItems()
const = 0;
92 virtual ::std::shared_ptr<::IVersionedContentItemCollection const> getVersionedItems()
const = 0;
94 virtual void enableCatalogPackSource() = 0;
96 virtual void generateItems(::ContentSource* source) = 0;
98 virtual ::Bedrock::Threading::Async<void> reloadSources(
bool saveSources) = 0;
100 virtual void reloadItems() = 0;
102 virtual void reloadViews() = 0;
104 virtual void populateDependencies()
const = 0;
106 virtual void deleteContent(::std::shared_ptr<::ContentItem const>
const& contentItem) = 0;
108 virtual void deleteContent(::std::vector<::std::shared_ptr<::ContentItem const>>
const& contentItems) = 0;
110 virtual void deleteContentFiles(::std::shared_ptr<::ContentItem const>
const& contentItem) = 0;
112 virtual void deleteContentFiles(::std::vector<::std::shared_ptr<::ContentItem const>>
const& contentItems) = 0;
114 virtual void postDeleteContent(::std::shared_ptr<::ContentItem const>
const& contentItem) = 0;
116 virtual void postDeleteContent(::std::vector<::std::shared_ptr<::ContentItem const>>
const& contentItems) = 0;
118 virtual uint64 generateContentId() = 0;
120 virtual ::Core::PathBuffer<::std::string>
const getWorldResourcePath(::std::string
const& levelId)
const = 0;
122 virtual ::Core::PathBuffer<::std::string>
const getWorldBehaviorPath(::std::string
const& levelId)
const = 0;
124 virtual ::Core::PathBuffer<::std::string>
const getWorldResourceFolder(::std::string
const& levelId)
const = 0;
126 virtual ::Core::PathBuffer<::std::string>
const getWorldBehaviorFolder(::std::string
const& levelId)
const = 0;
128 virtual ::Core::PathBuffer<::std::string>
const getWorldPath(::std::string
const& levelId)
const = 0;
130 virtual ::Core::PathBuffer<::std::string>
const&
131 getPremiumWorldTemplateFolder(::ContentIdentity
const& templateId) = 0;
133 virtual ::ContentManagerProxy* getProxy() = 0;
135 virtual void beginAsyncInit(::TaskGroup& taskGroup) = 0;
137 virtual bool isInitialized()
const = 0;
139 virtual void onLanguageChanged() = 0;
141 virtual void refreshContentCatalogPackSource() = 0;
143 virtual ::Bedrock::PubSub::Subscription refreshContentCatalogPackSource(::std::function<
void()>&& callback) = 0;
145 virtual void onRealmsReset(::Realms::RealmId
const realmsId) = 0;
147 virtual ::Bedrock::NotNullNonOwnerPtr<::Core::FilePathManager> getFilePathManager() = 0;
149 virtual ::Bedrock::PubSub::Subscription
150 subscribeToSourcesReloadedAsyncCompleted(::std::function<
void()>&& onSourcesReloadedAsyncCallback) = 0;
152 virtual ::std::shared_ptr<::StorageManager::ContentItemProvider> getStorageContentItemProvider() = 0;
154 virtual ::StorageManager::IContentHandler& getStorageContentHandler() = 0;
156 virtual ::std::shared_ptr<::StorageManager::WorldConverter> getStorageWorldConverter() = 0;
158 virtual ::Bedrock::PubSub::Subscription registerToReloadViews(::std::function<
void()> callback) = 0;
160 virtual ::Bedrock::PubSub::Subscription registerToDeleteContent(::std::function<
void()> callback) = 0;
Definition Subscription.h:10
Definition CachedHostPackIdProvider.h:5
Definition ContentIdentity.h:8
Definition ContentItemCollection.h:5
Definition ContentManagerProxy.h:5
Definition FilePathManager.h:18
Definition IContentManagerContext.h:5
Definition IContentManager.h:5
Definition IVersionedContentItemCollection.h:5
Definition ContentItemProvider.h:7
Definition IContentHandler.h:7
Definition WorldConverter.h:7
Definition TaskGroup.h:61
Definition ContentItem.h:5
Definition ContentSource.h:5
Definition InvalidPacksFilterGroup.h:5
Definition PackContentItem.h:5
Definition RealmPackManagerContentSource.h:5