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
128 virtual ~WorldStorageHandler() /*override*/;
129 // NOLINTEND
130
131public:
132 // member functions
133 // NOLINTBEGIN
134 MCAPI WorldStorageHandler(
135 ::Core::PathBuffer<::std::string> const& workingDirectory,
136 ::ILevelListCache& levelListCache,
137 ::IContentManager& contentManager,
138 ::FileArchiver& fileArchiver,
139 ::Social::IUserManager& userManager,
140 ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> const& keyProvider,
141 ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv> levelDbEnv
142 );
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 ::std::string _makeBackupOfLevel(::World::WorldID const& id);
151
152 MCAPI void _onDuplicateWorldSuccess(
153 ::std::string const& worldId,
154 ::Core::PathBuffer<::std::string> const& worldPath,
155 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> const&
156 onComplete
157 ) const;
158
159 MCAPI void _onExportComplete(
160 ::FileArchiverOutcome outcome,
161 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete,
162 ::std::shared_ptr<::FilePickerSettings> settings
163 );
164
165 MCAPI void _scheduleCheckUserStorageAsync() const;
166
167 MCAPI void _setupExportWorld(
168 ::World::WorldID const& worldId,
169 ::FileArchiver::ExportType exportType,
170 ::World::ExportWorldFlags flags,
171 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
172 );
173 // NOLINTEND
174
175public:
176 // constructor thunks
177 // NOLINTBEGIN
178 MCAPI void* $ctor(
179 ::Core::PathBuffer<::std::string> const& workingDirectory,
180 ::ILevelListCache& levelListCache,
181 ::IContentManager& contentManager,
182 ::FileArchiver& fileArchiver,
183 ::Social::IUserManager& userManager,
184 ::Bedrock::NotNullNonOwnerPtr<::IContentKeyProvider const> const& keyProvider,
185 ::Bedrock::NotNullNonOwnerPtr<::LevelDbEnv> levelDbEnv
186 );
187 // NOLINTEND
188
189public:
190 // destructor thunk
191 // NOLINTBEGIN
192 MCAPI void $dtor();
193 // NOLINTEND
194
195public:
196 // virtual function thunks
197 // NOLINTBEGIN
198 MCAPI ::std::variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
199 $readWorld(::World::WorldID const& id) const;
200
201 MCAPI ::std::optional<::World::IWorldStorageHandler::WriteWorldError> $updateOrCreateWorld(
202 ::LevelData& levelData,
203 ::LevelSummary& levelSummary,
204 ::std::shared_ptr<::LevelSettings> levelSettings
205 ) const;
206
207 MCAPI void $deleteWorld(::World::WorldID const& id);
208
209 MCAPI void $reloadWorld(::World::WorldID const& id);
210
211 MCAPI ::Bedrock::Threading::Async<void> $clearPlayerData(
212 ::World::WorldID const& worldId,
213 ::World::ClearPlayerDataType type,
214 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
215 );
216
217 MCAPI void $duplicateWorld(
218 ::World::WorldID const& worldId,
219 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
220 );
221
222 MCAPI void $exportWorld(
223 ::World::WorldID const& worldId,
224 ::World::ExportWorldFlags flags,
225 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
226 );
227
228 MCAPI void $exportWorldAsTemplate(
229 ::World::WorldID const& worldId,
230 ::World::ExportWorldFlags flags,
231 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
232 );
233
234 MCFOLD ::World::IWorldStorageHandler::ExportWorldStatus $exportWorldStatus() const;
235
236 MCAPI void $updateWorldIcon(
237 ::World::WorldID const& worldId,
238 ::Core::PathBuffer<::std::string> const& screenshotPath,
239 ::std::string const& id,
240 ::std::function<void(::World::WorldID const&)> onComplete
241 );
242
243 MCAPI void
244 $resetWorldIcon(::World::WorldID const& worldId, ::std::function<void(::World::WorldID const&)> onComplete);
245 // NOLINTEND
246
247public:
248 // vftables
249 // NOLINTBEGIN
250 MCNAPI static void** $vftableForIWorldStorageHandler();
251
253 // NOLINTEND
254};
255
256} // namespace World
Definition FileArchiver.h:35
Definition FilePickerSettings.h:5
Definition IContentKeyProvider.h:13
Definition IContentManager.h:5
Definition ILevelListCache.h:27
Definition LevelData.h:50
Definition LevelDbEnv.h:8
Definition LevelSettings.h:39
Definition IUserManager.h:34
Definition TaskGroup.h:53
Definition WorldStorageHandler.h:7
static MCAPI void ** $vftableForIWorldStorageHandler()
static MCAPI void ** $vftableForEnableQueueForMainThread()
Definition LevelSummary.h:30
Definition IWorldStorageHandler.h:27
Definition WorldStorageHandler.h:15