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 NotEnoughSpace = 10,
62 };
63
64 enum class StartClearPlayerDataError : int {
65 FailedToOpenDatabase = 0,
66 };
67
68 enum class ExportWorldStatus : uchar {
69 Idle = 0,
70 Setup = 1,
71 SelectingFileDestination = 2,
72 Exporting = 3,
73 };
74
75 struct CachedWorldData {
76 public:
77 // member variables
78 // NOLINTBEGIN
79 ::ll::TypedStorage<8, 8, ::LevelData&> cachedLevelData;
80 ::ll::TypedStorage<8, 8, ::LevelSummary&> cachedLevelSummary;
81 // NOLINTEND
82
83 public:
84 // prevent constructor by default
85 CachedWorldData& operator=(CachedWorldData const&);
86 CachedWorldData(CachedWorldData const&);
87 CachedWorldData();
88 };
89
90 using ReadWorldResult =
91 ::std::variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>;
92
93public:
94 // virtual functions
95 // NOLINTBEGIN
96 virtual ~IWorldStorageHandler() = default;
97
98 virtual ::std::
99 variant<::World::IWorldStorageHandler::ReadWorldError, ::World::IWorldStorageHandler::CachedWorldData>
100 readWorld(::World::WorldID const& id) const = 0;
101
102 virtual ::std::optional<::World::IWorldStorageHandler::WriteWorldError> updateOrCreateWorld(
103 ::LevelData& levelData,
104 ::LevelSummary& levelSummary,
105 ::std::shared_ptr<::LevelSettings> levelSettings
106 ) const = 0;
107
108 virtual void deleteWorld(::World::WorldID const& id) = 0;
109
110 virtual void reloadWorld(::World::WorldID const& id) = 0;
111
112 virtual void duplicateWorld(
113 ::World::WorldID const& worldId,
114 ::std::function<void(::World::WorldID const&, ::World::IWorldStorageHandler::DuplicateWorldResult)> onComplete
115 ) = 0;
116
117 virtual void exportWorld(
118 ::World::WorldID const& worldId,
119 ::World::ExportWorldFlags flags,
120 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
121 ) = 0;
122
123 virtual void exportWorldAsTemplate(
124 ::World::WorldID const& worldId,
125 ::World::ExportWorldFlags flags,
126 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
127 ) = 0;
128
129 virtual ::World::IWorldStorageHandler::ExportWorldStatus exportWorldStatus() const = 0;
130
131 virtual void updateWorldIcon(
132 ::World::WorldID const& worldId,
133 ::Core::PathBuffer<::std::string> const& screenshotPath,
134 ::std::string const& id,
135 ::std::function<void(::World::WorldID const&)> onComplete
136 ) = 0;
137
138 virtual void
139 resetWorldIcon(::World::WorldID const& worldId, ::std::function<void(::World::WorldID const&)> onComplete) = 0;
140
141 virtual ::Bedrock::Threading::Async<void> clearPlayerData(
142 ::World::WorldID const& worldId,
143 ::World::ClearPlayerDataType type,
144 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
145 ) = 0;
146 // NOLINTEND
147};
148
149} // namespace World
Definition LevelData.h:55
Definition LevelSettings.h:38
Definition IWorldStorageHandler.h:7
Definition LevelSummary.h:30
Definition IWorldStorageHandler.h:27
Definition WorldID.h:7