LeviLamina
Loading...
Searching...
No Matches
WorldEditor.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/screens/models/ContentType.h"
7#include "mc/client/world/AddWorldFromTemplateError.h"
8#include "mc/client/world/ClearPlayerDataType.h"
9#include "mc/client/world/CloseWorldError.h"
10#include "mc/client/world/DeleteWorldError.h"
11#include "mc/client/world/ExportWorldFlags.h"
12#include "mc/client/world/IWorldStorageHandler.h"
13#include "mc/client/world/PackActionError.h"
14#include "mc/client/world/PackDownloadError.h"
15#include "mc/client/world/SaveWorldError.h"
16#include "mc/client/world/WorldID.h"
17#include "mc/deps/core/file/PathBuffer.h"
18#include "mc/deps/core/threading/Async.h"
19#include "mc/deps/core/utility/pub_sub/Publisher.h"
20#include "mc/world/level/LevelListCacheObserver.h"
21
22// auto generated forward declare list
23// clang-format off
24class ILevelListCache;
25class LevelData;
26struct LevelSummary;
27namespace Bedrock::PubSub { class Subscription; }
28namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
29namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
30namespace Realms { struct RealmId; }
31namespace Realms { struct World; }
32namespace World { class IWorldResourcePackHandler; }
33namespace World { class IWorldStorageHandler; }
34namespace World { class IWorldTemplateHandler; }
35namespace World { struct PackDownloadProgressInfo; }
36namespace World { struct WorldData; }
37namespace World { struct WorldPacksData; }
38// clang-format on
39
40namespace World {
41
42class WorldEditor : public ::LevelListCacheObserver {
43public:
44 // member variables
45 // NOLINTBEGIN
46 ::ll::TypedStorage<4, 4, int> mNextModifier;
47 ::ll::TypedStorage<1, 1, bool const> mIsEduMode;
48 ::ll::TypedStorage<8, 8, ::ILevelListCache&> mLevelListCache;
49 ::ll::TypedStorage<8, 8, ::World::IWorldResourcePackHandler&> mWorldResourcePackHandler;
50 ::ll::TypedStorage<8, 8, ::World::IWorldStorageHandler&> mWorldStorageHandler;
51 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::World::IWorldTemplateHandler>> mWorldTemplateHandler;
52 ::ll::TypedStorage<
53 8,
54 8,
55 ::std::unique_ptr<
56 ::Bedrock::PubSub::Publisher<void(::World::WorldID), ::Bedrock::PubSub::ThreadModel::SingleThreaded, 0>>>
57 mOnLevelDataUpdatedPublisher;
58 ::ll::TypedStorage<8, 64, ::std::function<void()>> mOnSaveCompletedCallback;
59 ::ll::TypedStorage<8, 64, ::std::function<void(::World::SaveWorldError)>> mOnSaveErrorCallback;
60 ::ll::TypedStorage<8, 24, ::std::vector<::World::WorldID>> mIDs;
61 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::World::WorldData>> mWorlds;
62 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::LevelData>> mLevelData;
63 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::LevelSummary>> mLevelSummary;
64 ::ll::TypedStorage<8, 24, ::std::vector<::Realms::RealmId>> mRealmIDs;
65 ::ll::TypedStorage<8, 64, ::std::unordered_map<int64, ::Realms::World>> mRealmWorlds;
66 ::ll::TypedStorage<8, 128, ::Bedrock::PubSub::Publisher<void(), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
67 mNotifyWorldsInvalidated;
68 // NOLINTEND
69
70public:
71 // prevent constructor by default
72 WorldEditor& operator=(WorldEditor const&);
73 WorldEditor(WorldEditor const&);
74 WorldEditor();
75
76public:
77 // virtual functions
78 // NOLINTBEGIN
79 virtual void onLevelDeleted(::std::string const& levelId) /*override*/;
80
81 virtual void onLevelUpdated(::std::string const& levelId) /*override*/;
82 // NOLINTEND
83
84public:
85 // member functions
86 // NOLINTBEGIN
87 MCAPI WorldEditor(
88 ::ILevelListCache& levelListCache,
89 bool isEduMode,
90 ::World::IWorldResourcePackHandler& worldResourcePackHandler,
91 ::World::IWorldStorageHandler& worldStorageHandler,
92 ::std::unique_ptr<::World::IWorldTemplateHandler> worldTemplateHandler
93 );
94
95 MCAPI ::LevelSummary& _addLevelSummary(::World::WorldID const& worldID);
96
97 MCAPI void _addWorldEditorEntry(
98 ::World::WorldID const& worldID,
99 ::World::IWorldStorageHandler::CachedWorldData const& cachedWorldData
100 );
101
102 MCAPI bool _closeWorld(::World::WorldID const& worldID);
103
104 MCAPI void _onWorldIconUpdated(::World::WorldID const& worldID);
105
106 MCAPI bool _refreshWorldData(::World::WorldID const& worldID);
107
108 MCAPI void _saveWorld(
109 ::World::WorldID const& worldID,
110 ::std::function<void()> onCompleteCallback,
111 ::std::function<void(::World::SaveWorldError)> onErrorCallback
112 );
113
114 MCAPI ::std::optional<::World::PackActionError>
115 activatePack(::World::WorldID const& worldID, ::ContentType contentType, ::std::string const& packId, bool force);
116
117 MCAPI ::World::WorldID addWorld();
118
119 MCAPI void addWorldFromTemplate(
120 ::std::string const& templateId,
121 ::std::function<void(::std::variant<::World::AddWorldFromTemplateError, ::World::WorldID>)> onComplete
122 );
123
124 MCAPI void cancelDownloadPack();
125
126 MCAPI ::std::optional<::World::PackActionError> changePackPriority(
127 ::World::WorldID const& worldID,
128 ::ContentType contentType,
129 ::std::string const& packId,
130 int fromIndex,
131 int toIndex
132 );
133
134 MCAPI ::Bedrock::Threading::Async<void> clearPlayerData(
135 ::World::WorldID const& worldID,
136 ::World::ClearPlayerDataType type,
137 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
138 ) const;
139
140 MCAPI ::std::optional<::World::CloseWorldError> closeWorld(::World::WorldID const& worldID);
141
142 MCAPI ::std::optional<::World::PackActionError> continuePackActivation(::World::WorldID const& worldID);
143
144 MCAPI ::std::optional<::World::PackActionError> continuePackDeactivation(::World::WorldID const& worldID);
145
146 MCAPI ::std::optional<::World::PackActionError>
147 deactivatePack(::World::WorldID const& worldID, ::ContentType contentType, ::std::string const& packId, bool force);
148
149 MCAPI ::std::optional<::World::DeleteWorldError> deleteWorld(::World::WorldID const& worldID);
150
151 MCAPI void downloadPacks(
152 ::World::WorldID const& worldID,
153 ::std::vector<::std::string> const& packIds,
154 ::std::function<void()> onCompleteCallback,
155 ::std::function<void(::World::PackDownloadError)> onErrorCallback
156 );
157
158 MCAPI void duplicateWorld(
159 ::World::WorldID const& worldID,
160 ::std::function<void()> onCompleteCallback,
161 ::std::function<void()> onCancelCallback,
162 ::std::function<void(::World::IWorldStorageHandler::DuplicateWorldResult)> onErrorCallback
163 );
164
165 MCAPI void exportWorld(
166 ::World::WorldID const& worldID,
167 ::World::ExportWorldFlags flags,
168 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
169 ) const;
170
171 MCAPI void exportWorldAsTemplate(
172 ::World::WorldID const& worldID,
173 ::World::ExportWorldFlags flags,
174 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
175 ) const;
176
177 MCFOLD ::World::IWorldStorageHandler::ExportWorldStatus exportWorldStatus() const;
178
179 MCAPI ::World::PackDownloadProgressInfo getDownloadPackProgress();
180
181 MCAPI ::World::WorldData* getWorld(::World::WorldID const& worldID);
182
183 MCAPI ::World::WorldPacksData getWorldPacksData(::World::WorldID const& worldID);
184
185 MCAPI bool hasNonAddonBehaviorPacks(::World::WorldID const& id) const;
186
187 MCAPI bool isAchievementsDisabled(::World::WorldID const& id, bool isTrial) const;
188
189 MCAPI bool isWorldInEditor(::World::WorldID const& worldID);
190
191 MCAPI bool isWorldPlatformLocked(::World::WorldID const& id) const;
192
193 MCAPI ::std::optional<::World::IWorldStorageHandler::ReadWorldError> loadWorld(::World::WorldID const& worldID);
194
195 MCAPI ::Bedrock::PubSub::Subscription
196 registerWorldIconUpdatedListener(::std::function<void(::World::WorldID const&)> callback);
197
198 MCAPI ::Bedrock::PubSub::Subscription registerWorldsInvalidatedListener(::std::function<void()> callback);
199
200 MCAPI void reloadWorld(::World::WorldID const& worldID);
201
202 MCAPI void resetWorldIconToDefault(::World::WorldID const& worldID);
203
204 MCAPI void saveScreenshotAsWorldIcon(
205 ::World::WorldID const& worldID,
206 ::Core::PathBuffer<::std::string> screenshotPath,
207 ::std::string const& id
208 );
209
210 MCAPI void saveWorld(
211 ::World::WorldID const& worldID,
212 ::std::function<void()> onCompleteCallback,
213 ::std::function<void(::World::SaveWorldError)> onErrorCallback
214 );
215
216 MCAPI void setRealmWorldInfo(::Realms::World const& realmWorld);
217 // NOLINTEND
218
219public:
220 // constructor thunks
221 // NOLINTBEGIN
222 MCAPI void* $ctor(
223 ::ILevelListCache& levelListCache,
224 bool isEduMode,
225 ::World::IWorldResourcePackHandler& worldResourcePackHandler,
226 ::World::IWorldStorageHandler& worldStorageHandler,
227 ::std::unique_ptr<::World::IWorldTemplateHandler> worldTemplateHandler
228 );
229 // NOLINTEND
230
231public:
232 // virtual function thunks
233 // NOLINTBEGIN
234 MCAPI void $onLevelDeleted(::std::string const& levelId);
235
236 MCAPI void $onLevelUpdated(::std::string const& levelId);
237 // NOLINTEND
238
239public:
240 // vftables
241 // NOLINTBEGIN
242 MCNAPI static void** $vftable();
243 // NOLINTEND
244};
245
246} // namespace World
Definition Subscription.h:10
Definition ILevelListCache.h:27
Definition LevelData.h:55
Definition IWorldResourcePackHandler.h:7
Definition IWorldStorageHandler.h:7
Definition IWorldTemplateHandler.h:7
Definition WorldEditor.h:7
static MCAPI void ** $vftable()
Definition LevelSummary.h:30
Definition RealmId.h:7
Definition World.h:7
Definition PackDownloadProgressInfo.h:7
Definition WorldData.h:7
Definition WorldPacksData.h:7