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/ExportWorldFlags.h"
10#include "mc/client/world/IWorldStorageHandler.h"
11#include "mc/client/world/PackActionError.h"
12#include "mc/client/world/PackDownloadError.h"
13#include "mc/client/world/SaveWorldError.h"
14#include "mc/client/world/WorldID.h"
15#include "mc/deps/core/threading/Async.h"
16#include "mc/deps/core/utility/pub_sub/Publisher.h"
17#include "mc/world/level/LevelListCacheObserver.h"
18
19// auto generated forward declare list
20// clang-format off
21class ILevelListCache;
22class LevelData;
23struct LevelSummary;
24namespace Bedrock::PubSub { class Subscription; }
25namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
26namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
27namespace Realms { struct RealmId; }
28namespace Realms { struct World; }
29namespace World { class IWorldResourcePackHandler; }
30namespace World { class IWorldStorageHandler; }
31namespace World { class IWorldTemplateHandler; }
32namespace World { struct WorldData; }
33namespace World { struct WorldPacksData; }
34// clang-format on
35
36namespace World {
37
38class WorldEditor : public ::LevelListCacheObserver {
39public:
40 // member variables
41 // NOLINTBEGIN
42 ::ll::TypedStorage<4, 4, int> mNextModifier;
43 ::ll::TypedStorage<1, 1, bool const> mIsEduMode;
44 ::ll::TypedStorage<8, 8, ::ILevelListCache&> mLevelListCache;
45 ::ll::TypedStorage<8, 8, ::World::IWorldResourcePackHandler&> mWorldResourcePackHandler;
46 ::ll::TypedStorage<8, 8, ::World::IWorldStorageHandler&> mWorldStorageHandler;
47 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::World::IWorldTemplateHandler>> mWorldTemplateHandler;
48 ::ll::TypedStorage<
49 8,
50 8,
51 ::std::unique_ptr<
52 ::Bedrock::PubSub::Publisher<void(::World::WorldID), ::Bedrock::PubSub::ThreadModel::SingleThreaded, 0>>>
53 mOnLevelDataUpdatedPublisher;
54 ::ll::TypedStorage<8, 64, ::std::function<void()>> mOnSaveCompletedCallback;
55 ::ll::TypedStorage<8, 64, ::std::function<void(::World::SaveWorldError)>> mOnSaveErrorCallback;
56 ::ll::TypedStorage<8, 24, ::std::vector<::World::WorldID>> mIDs;
57 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::World::WorldData>> mWorlds;
58 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::LevelData>> mLevelData;
59 ::ll::TypedStorage<8, 64, ::std::unordered_map<::World::WorldID, ::LevelSummary>> mLevelSummary;
60 ::ll::TypedStorage<8, 24, ::std::vector<::Realms::RealmId>> mRealmIDs;
61 ::ll::TypedStorage<8, 64, ::std::unordered_map<int64, ::Realms::World>> mRealmWorlds;
62 ::ll::TypedStorage<8, 128, ::Bedrock::PubSub::Publisher<void(), ::Bedrock::PubSub::ThreadModel::MultiThreaded, 0>>
63 mNotifyWorldsInvalidated;
64 // NOLINTEND
65
66public:
67 // prevent constructor by default
68 WorldEditor& operator=(WorldEditor const&);
69 WorldEditor(WorldEditor const&);
70 WorldEditor();
71
72public:
73 // virtual functions
74 // NOLINTBEGIN
75 virtual void onLevelDeleted(::std::string const& levelId) /*override*/;
76
77 virtual void onLevelUpdated(::std::string const& levelId) /*override*/;
78
79 virtual ~WorldEditor() /*override*/;
80 // NOLINTEND
81
82public:
83 // member functions
84 // NOLINTBEGIN
85 MCAPI WorldEditor(
86 ::ILevelListCache& levelListCache,
87 bool isEduMode,
88 ::World::IWorldResourcePackHandler& worldResourcePackHandler,
89 ::World::IWorldStorageHandler& worldStorageHandler,
90 ::std::unique_ptr<::World::IWorldTemplateHandler> worldTemplateHandler
91 );
92
93 MCAPI void _addWorldEditorEntry(
94 ::World::WorldID const& worldID,
95 ::World::IWorldStorageHandler::CachedWorldData const& cachedWorldData
96 );
97
98 MCAPI bool _closeWorld(::World::WorldID const& worldID);
99
100 MCAPI void _onWorldIconUpdated(::World::WorldID const& worldID);
101
102 MCAPI bool _refreshWorldData(::World::WorldID const& worldID);
103
104 MCAPI void _saveWorld(
105 ::World::WorldID const& worldID,
106 ::std::function<void()> onCompleteCallback,
107 ::std::function<void(::World::SaveWorldError)> onErrorCallback
108 );
109
110 MCAPI ::std::optional<::World::PackActionError>
111 activatePack(::World::WorldID const& worldID, ::ContentType contentType, ::std::string const& packId, bool force);
112
113 MCAPI ::World::WorldID addWorld();
114
115 MCAPI void addWorldFromTemplate(
116 ::std::string const& templateId,
117 ::std::function<void(::std::variant<::World::AddWorldFromTemplateError, ::World::WorldID>)> onComplete
118 );
119
120 MCAPI ::Bedrock::Threading::Async<void> clearPlayerData(
121 ::World::WorldID const& worldID,
122 ::World::ClearPlayerDataType type,
123 ::std::optional<::World::IWorldStorageHandler::StartClearPlayerDataError>& error
124 ) const;
125
126 MCAPI ::std::optional<::World::PackActionError>
127 deactivatePack(::World::WorldID const& worldID, ::ContentType contentType, ::std::string const& packId, bool force);
128
129 MCAPI void downloadPacks(
130 ::World::WorldID const& worldID,
131 ::std::vector<::std::string> const& packIds,
132 ::std::function<void()> onCompleteCallback,
133 ::std::function<void(::World::PackDownloadError)> onErrorCallback
134 );
135
136 MCAPI void duplicateWorld(
137 ::World::WorldID const& worldID,
138 ::std::function<void()> onCompleteCallback,
139 ::std::function<void()> onCancelCallback,
140 ::std::function<void(::World::IWorldStorageHandler::DuplicateWorldResult)> onErrorCallback
141 );
142
143 MCAPI void exportWorld(
144 ::World::WorldID const& worldID,
145 ::World::ExportWorldFlags flags,
146 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
147 ) const;
148
149 MCAPI void exportWorldAsTemplate(
150 ::World::WorldID const& worldID,
151 ::World::ExportWorldFlags flags,
152 ::std::function<void(::World::IWorldStorageHandler::ExportWorldResult)> onComplete
153 ) const;
154
155 MCAPI ::World::WorldData* getWorld(::World::WorldID const& worldID);
156
157 MCAPI ::World::WorldPacksData getWorldPacksData(::World::WorldID const& worldID);
158
159 MCAPI ::std::optional<::World::IWorldStorageHandler::ReadWorldError> loadWorld(::World::WorldID const& worldID);
160
161 MCAPI ::Bedrock::PubSub::Subscription
162 registerWorldIconUpdatedListener(::std::function<void(::World::WorldID const&)> callback);
163
164 MCAPI void saveWorld(
165 ::World::WorldID const& worldID,
166 ::std::function<void()> onCompleteCallback,
167 ::std::function<void(::World::SaveWorldError)> onErrorCallback
168 );
169 // NOLINTEND
170
171public:
172 // constructor thunks
173 // NOLINTBEGIN
174 MCAPI void* $ctor(
175 ::ILevelListCache& levelListCache,
176 bool isEduMode,
177 ::World::IWorldResourcePackHandler& worldResourcePackHandler,
178 ::World::IWorldStorageHandler& worldStorageHandler,
179 ::std::unique_ptr<::World::IWorldTemplateHandler> worldTemplateHandler
180 );
181 // NOLINTEND
182
183public:
184 // destructor thunk
185 // NOLINTBEGIN
186 MCAPI void $dtor();
187 // NOLINTEND
188
189public:
190 // virtual function thunks
191 // NOLINTBEGIN
192 MCAPI void $onLevelDeleted(::std::string const& levelId);
193
194 MCAPI void $onLevelUpdated(::std::string const& levelId);
195 // NOLINTEND
196
197public:
198 // vftables
199 // NOLINTBEGIN
200 MCNAPI static void** $vftable();
201 // NOLINTEND
202};
203
204} // namespace World
Definition Subscription.h:10
Definition ILevelListCache.h:27
Definition LevelData.h:52
Definition IWorldResourcePackHandler.h:7
Definition IWorldStorageHandler.h:7
Definition IWorldTemplateHandler.h:7
Definition WorldEditor.h:7
static MCAPI void ** $vftable()
Definition MultiThreaded.h:12
Definition LevelSummary.h:30
Definition RealmId.h:7
Definition World.h:7
Definition WorldData.h:7
Definition WorldPacksData.h:7