LeviLamina
Loading...
Searching...
No Matches
WorldStorageHandler.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/world/ClearPlayerDataType.h"
7#include "mc/client/world/ExportWorldFlags.h"
8#include "mc/client/world/IWorldStorageHandler.h"
9#include "mc/client/world/WorldID.h"
10#include "mc/deps/core/file/PathBuffer.h"
11#include "mc/deps/core/minecraft/threading/EnableQueueForMainThread.h"
12#include "mc/deps/core/threading/Async.h"
13#include "mc/deps/core/utility/NonOwnerPointer.h"
14#include "mc/world/level/FileArchiver.h"
15#include "mc/world/level/FileArchiverOutcome.h"
16
17// auto generated forward declare list
18// clang-format off
19class FileArchiver;
22class IContentManager;
23class ILevelListCache;
24class LevelData;
25class LevelDbEnv;
26class LevelSettings;
27class TaskGroup;
28struct LevelSummary;
29namespace Social { class IUserManager; }
30// clang-format on
31
32namespace World {
33
34class WorldStorageHandler : public ::World::IWorldStorageHandler,
35 public ::Bedrock::Threading::EnableQueueForMainThread {
36public:
37 // WorldStorageHandler inner types declare
38 // clang-format off
39 struct ExporWorldTaskData;
40 // clang-format on
41
42 // WorldStorageHandler inner types define
43 struct ExporWorldTaskData {
44 public:
45 // member variables
46 // NOLINTBEGIN
47 ::ll::TypedStorage<8, 32, ::World::WorldID> mBackupWorldId;
48 ::ll::TypedStorage<4, 8, ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>>
49 mStartClearPlayerDataError;
50 ::ll::TypedStorage<8, 16, ::Bedrock::Threading::Async<void>> mClearPlayerDataTask;
51 // NOLINTEND
52 };
53
54public:
55 // member variables
56 // NOLINTBEGIN
57 ::ll::TypedStorage<8, 32, ::Core::PathBuffer<::std::string> const> mWorkingDirectory;
58 ::ll::TypedStorage<8, 8, ::ILevelListCache&> mLevelListCache;
59 ::ll::TypedStorage<8, 8, ::IContentManager&> mContentManager;
60 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const>> mKeyProvider;
61 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv>> mLevelDbEnv;
62 ::ll::TypedStorage<8, 8, ::FileArchiver&> mFileArchiver;
63 ::ll::TypedStorage<8, 8, ::Social::IUserManager&> mUserManager;
64 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mDiskTaskGroup;
65 ::ll::TypedStorage<1, 1, ::World::IWorldStorageHandler::ExportWorldStatus> mExportWorldStatus;
66 // NOLINTEND
67
68public:
69 // prevent constructor by default
70 WorldStorageHandler& operator=(WorldStorageHandler const&);
71 WorldStorageHandler(WorldStorageHandler const&);
72 WorldStorageHandler();
73
74public:
75 // virtual functions
76 // NOLINTBEGIN
77 virtual ::std::
78 variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
79 readWorld(::World::WorldID const& id) const /*override*/;
80
81 virtual ::std::optional<::World::IWorldStorageHandler::WriteWorldError> updateOrCreateWorld(
82 ::LevelData& levelData,
83 ::LevelSummary& levelSummary,
84 ::std::shared_ptr<::LevelSettings> levelSettings
85 ) const /*override*/;
86
87 virtual void deleteWorld(::World::WorldID const& id) /*override*/;
88
89 virtual void reloadWorld(::World::WorldID const& id) /*override*/;
90
91 virtual ::Bedrock::Threading::Async<void> clearPlayerData(
92 ::World::WorldID const& worldId,
93 ::World::ClearPlayerDataType type,
94 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
95 ) /*override*/;
96
97 virtual void duplicateWorld(
98 ::World::WorldID const& worldId,
99 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
100 ) /*override*/;
101
102 virtual void exportWorld(
103 ::World::WorldID const& worldId,
104 ::World::ExportWorldFlags flags,
105 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
106 ) /*override*/;
107
108 virtual void exportWorldAsTemplate(
109 ::World::WorldID const& worldId,
110 ::World::ExportWorldFlags flags,
111 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
112 ) /*override*/;
113
114 virtual ::World::IWorldStorageHandler::ExportWorldStatus exportWorldStatus() const /*override*/;
115
116 virtual void updateWorldIcon(
117 ::World::WorldID const& worldId,
118 ::Core::PathBuffer<::std::string> const& screenshotPath,
119 ::std::string const& id,
120 ::std::function<void(::World::WorldID const&)> onComplete
121 ) /*override*/;
122
123 virtual void resetWorldIcon(
124 ::World::WorldID const& worldId,
125 ::std::function<void(::World::WorldID const&)> onComplete
126 ) /*override*/;
127 // NOLINTEND
128
129public:
130 // member functions
131 // NOLINTBEGIN
132 MCAPI WorldStorageHandler(
133 ::Core::PathBuffer<::std::string> const& workingDirectory,
134 ::ILevelListCache& levelListCache,
135 ::IContentManager& contentManager,
136 ::FileArchiver& fileArchiver,
137 ::Social::IUserManager& userManager,
138 ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> const& keyProvider,
139 ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv> levelDbEnv
140 );
141
142 MCAPI ::World::IWorldStorageHandler::DuplicateWorldResult _canCreateCopy(::World::WorldID const& worldId) const;
143
144 MCAPI void _exportWorld(
145 ::World::WorldID const& worldId,
146 ::FileArchiver::ExportType exportType,
147 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
148 );
149
150 MCAPI uint64 _getWorldSizeInBytes(::World::WorldID const& worldId) const;
151
152 MCAPI ::std::string _makeBackupOfLevel(::World::WorldID const& id);
153
154 MCAPI void _onDuplicateWorldSuccess(
155 ::std::string const& worldId,
156 ::Core::PathBuffer<::std::string> const& worldPath,
157 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> const&
158 onComplete
159 ) const;
160
161 MCAPI void _onExportComplete(
162 ::FileArchiverOutcome outcome,
163 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete,
164 ::std::shared_ptr<::FilePickerSettings> settings
165 );
166
167 MCAPI void _scheduleCheckUserStorageAsync() const;
168
169 MCAPI void _setupExportWorld(
170 ::World::WorldID const& worldId,
171 ::FileArchiver::ExportType exportType,
172 ::World::ExportWorldFlags flags,
173 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
174 );
175 // NOLINTEND
176
177public:
178 // constructor thunks
179 // NOLINTBEGIN
180 MCAPI void* $ctor(
181 ::Core::PathBuffer<::std::string> const& workingDirectory,
182 ::ILevelListCache& levelListCache,
183 ::IContentManager& contentManager,
184 ::FileArchiver& fileArchiver,
185 ::Social::IUserManager& userManager,
186 ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> const& keyProvider,
187 ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv> levelDbEnv
188 );
189 // NOLINTEND
190
191public:
192 // virtual function thunks
193 // NOLINTBEGIN
194 MCAPI ::std::variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
195 $readWorld(::World::WorldID const& id) const;
196
197 MCAPI ::std::optional<::World::IWorldStorageHandler::WriteWorldError> $updateOrCreateWorld(
198 ::LevelData& levelData,
199 ::LevelSummary& levelSummary,
200 ::std::shared_ptr<::LevelSettings> levelSettings
201 ) const;
202
203 MCAPI void $deleteWorld(::World::WorldID const& id);
204
205 MCAPI void $reloadWorld(::World::WorldID const& id);
206
207 MCAPI ::Bedrock::Threading::Async<void> $clearPlayerData(
208 ::World::WorldID const& worldId,
209 ::World::ClearPlayerDataType type,
210 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
211 );
212
213 MCAPI void $duplicateWorld(
214 ::World::WorldID const& worldId,
215 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
216 );
217
218 MCAPI void $exportWorld(
219 ::World::WorldID const& worldId,
220 ::World::ExportWorldFlags flags,
221 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
222 );
223
224 MCAPI void $exportWorldAsTemplate(
225 ::World::WorldID const& worldId,
226 ::World::ExportWorldFlags flags,
227 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
228 );
229
230 MCFOLD ::World::IWorldStorageHandler::ExportWorldStatus $exportWorldStatus() const;
231
232 MCAPI void $updateWorldIcon(
233 ::World::WorldID const& worldId,
234 ::Core::PathBuffer<::std::string> const& screenshotPath,
235 ::std::string const& id,
236 ::std::function<void(::World::WorldID const&)> onComplete
237 );
238
239 MCAPI void
240 $resetWorldIcon(::World::WorldID const& worldId, ::std::function<void(::World::WorldID const&)> onComplete);
241 // NOLINTEND
242
243public:
244 // vftables
245 // NOLINTBEGIN
246 MCNAPI static void** $vftableForIWorldStorageHandler();
247
249 // NOLINTEND
250};
251
252} // namespace World
Definition FileArchiver.h:36
Definition FilePickerSettings.h:5
Definition IContentKeyProvider.h:13
Definition IContentManager.h:5
Definition ILevelListCache.h:27
Definition LevelData.h:55
Definition LevelDbEnv.h:8
Definition LevelSettings.h:39
Definition IUserManager.h:7
Definition TaskGroup.h:55
Definition WorldStorageHandler.h:7
static MCAPI void ** $vftableForIWorldStorageHandler()
static MCAPI void ** $vftableForEnableQueueForMainThread()
Definition LevelSummary.h:30
Definition IWorldStorageHandler.h:27
Definition WorldStorageHandler.h:15