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 void _exportWorld(
133 ::World::WorldID const& worldId,
134 ::FileArchiver::ExportType const exportType,
135 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
136 );
137
138 MCAPI void _onExportComplete(
139 ::FileArchiverOutcome outcome,
140 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete,
141 ::std::shared_ptr<::FilePickerSettings> settings
142 );
143
144 MCAPI void _setupExportWorld(
145 ::World::WorldID const& worldId,
146 ::FileArchiver::ExportType const exportType,
147 ::World::ExportWorldFlags flags,
148 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
149 );
150 // NOLINTEND
151
152public:
153 // virtual function thunks
154 // NOLINTBEGIN
155 MCAPI ::std::variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
156 $readWorld(::World::WorldID const& id) const;
157
158 MCAPI ::std::optional<::World::IWorldStorageHandler::WriteWorldError> $updateOrCreateWorld(
159 ::LevelData& levelData,
160 ::LevelSummary& levelSummary,
161 ::std::shared_ptr<::LevelSettings> levelSettings
162 ) const;
163
164 MCAPI void $deleteWorld(::World::WorldID const& id);
165
166 MCAPI void $reloadWorld(::World::WorldID const& id);
167
168 MCAPI ::Bedrock::Threading::Async<void> $clearPlayerData(
169 ::World::WorldID const& worldId,
170 ::World::ClearPlayerDataType type,
171 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
172 );
173
174 MCAPI void $duplicateWorld(
175 ::World::WorldID const& worldId,
176 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
177 );
178
179 MCAPI void $exportWorld(
180 ::World::WorldID const& worldId,
181 ::World::ExportWorldFlags flags,
182 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
183 );
184
185 MCAPI void $exportWorldAsTemplate(
186 ::World::WorldID const& worldId,
187 ::World::ExportWorldFlags flags,
188 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
189 );
190
191 MCAPI ::World::IWorldStorageHandler::ExportWorldStatus $exportWorldStatus() const;
192
193 MCAPI void $updateWorldIcon(
194 ::World::WorldID const& worldId,
195 ::Core::PathBuffer<::std::string> const& screenshotPath,
196 ::std::string const& id,
197 ::std::function<void(::World::WorldID const&)> onComplete
198 );
199
200 MCAPI void
201 $resetWorldIcon(::World::WorldID const& worldId, ::std::function<void(::World::WorldID const&)> onComplete);
202 // NOLINTEND
203};
204
205} // 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:38
Definition IUserManager.h:7
Definition TaskGroup.h:61
Definition WorldStorageHandler.h:7
Definition LevelSummary.h:30
Definition IWorldStorageHandler.h:27
Definition WorldStorageHandler.h:15