3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/persona/defaults/DefaultSkinType.h"
7#include "mc/deps/core/file/PathBuffer.h"
8#include "mc/deps/core/string/BasicStackString.h"
9#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
11#include "mc/deps/shared_types/persona/ArmSizeType.h"
27namespace mce {
class UUID; }
34 virtual ~ISkinRepository() =
default;
36 virtual void update(::ResourcePackManager& resourcePackManager) = 0;
38 virtual void flushResourceLoaderTasks() = 0;
41 addLoadListener(::std::weak_ptr<bool> existanceTracker, ::std::function<
void(::mce::UUID
const&)> callback) = 0;
43 virtual bool importSkinPack(::gsl::not_null<::std::shared_ptr<::Pack>> pack,
bool isTitleLocked) = 0;
46 loadCustomSkin(::std::string
const& customSkinId, ::SharedTypes::persona::ArmSizeType customSkinArmSize) = 0;
48 virtual bool tryLoadSkinPack(::mce::UUID
const& packId,
bool shouldNotifyPlayer) = 0;
50 virtual bool loadSkinPack(::mce::UUID
const& packId) = 0;
52 virtual void loadSkinPackAsync(::mce::UUID
const& packId, ::SkinPackMeta
const& metadata) = 0;
54 virtual void unloadAndDeleteSkinPack(::mce::UUID
const& packId) = 0;
56 virtual void unloadAndDeleteSkinPackForReimport(::mce::UUID
const& packId) = 0;
58 virtual void cancelPendingLoads() = 0;
60 virtual ::std::vector<::Pack const*>
const getKnownSkinPacks()
const = 0;
62 virtual ::std::vector<::Pack const*>
const getKnownSkinPacksInPackage()
const = 0;
64 virtual ::std::vector<::Pack const*>
const getKnownSkinPacksInUserDir()
const = 0;
66 virtual ::std::vector<::Pack const*>
const getKnownSkinPacksInPremiumDir()
const = 0;
68 virtual void forEachPack(::std::function<
void(::Pack
const&)>
const& callback)
const = 0;
70 virtual void forEachLoadedSkinPack(::std::function<
void(::SkinPack
const&)>
const& callback)
const = 0;
72 virtual ::SkinPack* getSkinPackById(::mce::UUID
const& packId)
const = 0;
74 virtual ::SkinPack* getSkinPackByIdHash(uint64 packIdHash)
const = 0;
76 virtual ::SemVersion
const& getVersionOfKnownSkinPack(::mce::UUID
const& packId)
const = 0;
78 virtual bool isSkinPackKnown(::mce::UUID
const& packId)
const = 0;
80 virtual bool isSkinPackLoaded(::mce::UUID
const& packId)
const = 0;
82 virtual bool isKnownSkinPackUnLoaded(::mce::UUID
const& packId)
const = 0;
84 virtual bool isSkinPackLoading(::mce::UUID
const& packId)
const = 0;
86 virtual bool isSkinPackOwned(::ContentIdentity
const& contentIdentity)
const = 0;
88 virtual ::Skin
const* getSkinBySerializableName(::std::string
const& serializableName)
const = 0;
90 virtual ::Skin
const* getSkin(::SkinHandle
const& skinHandle)
const = 0;
92 virtual bool canUseSkin(::Skin
const* skin)
const = 0;
94 virtual bool canUseSkin(::SkinHandle
const& skinHandle)
const = 0;
96 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
97 storeCustomSkin(::ResourceLocation
const& sourceLocation) = 0;
99 virtual ::SkinHandle addCustomSkin(::SkinHandle
const& customSkinHandle) = 0;
102 addCustomSkin(::persona::DefaultSkinType bodySkinType, ::ResourceLocation
const& customImageLocation) = 0;
105 addCustomSkin(::SerializedSkinRef
const& geoSerializedSkin, ::ResourceLocation
const& customImageLocation) = 0;
107 virtual bool canPickSkin()
const = 0;
109 virtual void pickSkin(::std::function<
void(
bool, ::std::string)> onPickSkin) = 0;
111 virtual void reloadSkinPackLocText() = 0;
113 virtual ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> getSkinKeyProvider()
const = 0;
115 virtual bool isValidSkin(::ResourceLocation
const& skinLocation)
const = 0;
117 virtual void loadSkin(::ResourceLocation
const& skinLocation) = 0;
119 virtual void unloadSkin(::ResourceLocation
const& skinLocation) = 0;
121 virtual bool loadCustomSkinTexture(::ResourceLocation
const& skinLocation) = 0;
123 virtual void beginAsyncInit(::TaskGroup& taskGroup) = 0;
125 virtual bool isInitialized()
const = 0;
127 virtual uint64 getLoadedSkinPackCount()
const = 0;
129 virtual uint64 getLoadingSkinPackCount()
const = 0;
131 virtual uint64 getUnloadedSkinPackCount()
const = 0;
133 virtual void deleteUnreferencedCustomSkinFiles(::std::vector<::SkinHandle>
const& referencedSkins) = 0;
135 virtual ::Core::PathBuffer<::std::string> getCustomSkinDirectoryPath()
const = 0;
137 virtual ::std::optional<::Core::PathBuffer<::std::string>> getSharedCustomSkinDirectoryPath()
const = 0;
Definition EnableNonOwnerReferences.h:7
Definition ContentIdentity.h:8
Definition IContentKeyProvider.h:13
Definition ISkinRepository.h:5
Definition ResourceLocation.h:15
Definition ResourcePackManager.h:29
Definition SemVersion.h:15
Definition SerializedSkinRef.h:26
Definition SkinHandle.h:5
Definition TaskGroup.h:85