LeviLamina
Loading...
Searching...
No Matches
IWorldStorageHandler.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/deps/core/file/PathBuffer.h"
9#include "mc/deps/core/threading/Async.h"
10
11// auto generated forward declare list
12// clang-format off
13class LevelData;
14class LevelSettings;
15struct LevelSummary;
16namespace World { struct WorldID; }
17// clang-format on
18
19namespace World {
20
22public:
23 // IWorldStorageHandler inner types declare
24 // clang-format off
25 struct CachedWorldData;
26 // clang-format on
27
28 // IWorldStorageHandler inner types define
29 enum class ReadWorldError : uchar {
30 IncorrectWorldId = 0,
31 UnexpectedError = 1,
32 };
33
34 enum class WriteWorldError : uchar {
35 IncorrectWorldId = 0,
36 UnableToCreateWorldDirectoryPath = 1,
37 UnableToCreateResourcePackDirectoryPath = 2,
38 UnableToCreateBehaviorDirectoryPath = 3,
39 InsufficientDiskSpace = 4,
40 };
41
42 enum class DuplicateWorldResult : uchar {
43 Ok = 0,
44 IncorrectWorldId = 1,
45 InsufficientDiskSpace = 2,
46 WorldCopyCancelled = 3,
47 UnknownError = 4,
48 };
49
50 enum class ExportWorldResult : uchar {
51 Ok = 0,
52 IncorrectWorldId = 1,
53 NoFile = 2,
54 ZipError = 3,
55 PremiumContent = 4,
56 EditionMismatch = 5,
57 EditorMismatch = 6,
58 ZipDepthError = 7,
59 UnknownError = 8,
60 Cancelled = 9,
61 };
62
63 enum class StartClearPlayerDataError : int {
64 FailedToOpenDatabase = 0,
65 };
66
67 enum class ExportWorldStatus : uchar {
68 Idle = 0,
69 Setup = 1,
70 SelectingFileDestination = 2,
71 Exporting = 3,
72 };
73
74 struct CachedWorldData {
75 public:
76 // member variables
77 // NOLINTBEGIN
78 ::ll::TypedStorage<8, 8, ::LevelData&> cachedLevelData;
79 ::ll::TypedStorage<8, 8, ::LevelSummary&> cachedLevelSummary;
80 // NOLINTEND
81
82 public:
83 // prevent constructor by default
84 CachedWorldData& operator=(CachedWorldData const&);
85 CachedWorldData(CachedWorldData const&);
86 CachedWorldData();
87 };
88
89 using ReadWorldResult =
90 ::std::variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>;
91
92public:
93 // virtual functions
94 // NOLINTBEGIN
95 virtual ~IWorldStorageHandler() = default;
96
97 virtual ::std::
98 variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
99 readWorld(::World::WorldID const& id) const = 0;
100
101 virtual ::std::optional<::World::IWorldStorageHandler::WriteWorldError> updateOrCreateWorld(
102 ::LevelData& levelData,
103 ::LevelSummary& levelSummary,
104 ::std::shared_ptr<::LevelSettings> levelSettings
105 ) const = 0;
106
107 virtual void deleteWorld(::World::WorldID const& id) = 0;
108
109 virtual void reloadWorld(::World::WorldID const& id) = 0;
110
111 virtual void duplicateWorld(
112 ::World::WorldID const& worldId,
113 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
114 ) = 0;
115
116 virtual void exportWorld(
117 ::World::WorldID const& worldId,
118 ::World::ExportWorldFlags flags,
119 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
120 ) = 0;
121
122 virtual void exportWorldAsTemplate(
123 ::World::WorldID const& worldId,
124 ::World::ExportWorldFlags flags,
125 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
126 ) = 0;
127
128 virtual ::World::IWorldStorageHandler::ExportWorldStatus exportWorldStatus() const = 0;
129
130 virtual void updateWorldIcon(
131 ::World::WorldID const& worldId,
132 ::Core::PathBuffer<::std::string> const& screenshotPath,
133 ::std::string const& id,
134 ::std::function<void(::World::WorldID const&)> onComplete
135 ) = 0;
136
137 virtual void
138 resetWorldIcon(::World::WorldID const& worldId, ::std::function<void(::World::WorldID const&)> onComplete) = 0;
139
140 virtual ::Bedrock::Threading::Async<void> clearPlayerData(
141 ::World::WorldID const& worldId,
142 ::World::ClearPlayerDataType type,
143 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
144 ) = 0;
145 // NOLINTEND
146
147public:
148 // virtual function thunks
149 // NOLINTBEGIN
150
151 // NOLINTEND
152
153public:
154 // vftables
155 // NOLINTBEGIN
156 MCNAPI static void** $vftable();
157 // NOLINTEND
158};
159
160} // namespace World
Definition LevelData.h:52
Definition LevelSettings.h:39
Definition IWorldStorageHandler.h:7
static MCAPI void ** $vftable()
Definition LevelSummary.h:30
Definition IWorldStorageHandler.h:27
Definition WorldID.h:7