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