LeviLamina
Loading...
Searching...
No Matches
DimensionManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/deps/game_refs/OwnerPtr.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/utility/NonOwnerPointer.h"
8#include "mc/deps/core/utility/pub_sub/Connector.h"
9#include "mc/deps/core/utility/pub_sub/Publisher.h"
10#include "mc/deps/core/utility/pub_sub/Subscription.h"
11#include "mc/deps/game_refs/WeakRef.h"
12#include "mc/util/NameIdStore.h"
13#include "mc/world/level/IDimensionManagerConnector.h"
14#include "mc/world/level/dimension/DimensionDefinitionGroup.h"
15
16// auto generated forward declare list
17// clang-format off
18class Dimension;
22class LevelStorage;
23class Random;
24struct DimensionIdType;
25struct DimensionType;
26namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
27// clang-format on
29
30class DimensionManager : public ::IDimensionManagerConnector {
31public:
32 // member variables
33 // NOLINTBEGIN
34 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::Util::NameIdStore<::DimensionIdType>>>>
35 mDimensionNameIdStore;
36 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::DimensionRegistry>>> mDimensionRegistry;
37 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> const> mDimensionFactory;
38 ::ll::TypedStorage<8, 16, ::DimensionDefinitionGroup> mDimensionDefinitionGroup;
39 ::ll::TypedStorage<
40 8,
41 128,
43 mOnReadyForCustomDimensionRegistrationPublisher;
44 ::ll::TypedStorage<
45 8,
46 128,
48 mOnNewDimensionCreatedPublisher;
49 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnLevelStorageSaveSubscription;
50 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnLevelStorageStartLeaveGameSubscription;
51 // NOLINTEND
52
53public:
54 // prevent constructor by default
55 DimensionManager();
56
57public:
58 // virtual functions
59 // NOLINTBEGIN
60 virtual ~DimensionManager();
61
62 virtual ::Bedrock::PubSub::Connector<void(::DimensionManager&)>&
63 getOnReadyForCustomDimensionRegistrationConnector() /*override*/;
64
65 virtual ::Bedrock::PubSub::Connector<void(::Dimension&)>& getOnNewDimensionCreatedConnector() /*override*/;
66 // NOLINTEND
67
68public:
69 // member functions
70 // NOLINTBEGIN
71 MCAPI explicit DimensionManager(::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> dimensionFactory);
72
73#ifdef LL_PLAT_C
74 MCAPI DimensionManager(
75 ::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> dimensionFactory,
76 ::DimensionDefinitionGroup dimensionDefinitions
77 );
78#endif
79
80 MCAPI bool _registerCustomDimensionWithDimensionDefinitionGroup(::std::string_view name, ::DimensionType type);
81
82 MCAPI void _registerCustomDimensionWithFactory(::std::string_view name, ::DimensionType type);
83
84 MCAPI void _registerFixedVanillaDimensionIds();
85
86#ifdef LL_PLAT_C
87 MCAPI void clientRegisterCustomDimension(::std::string_view name, ::DimensionType type);
88#endif
89
90 MCFOLD void forEachDimension(::std::function<bool(::Dimension&)> callback);
91
92 MCFOLD void forEachDimension(::std::function<bool(::Dimension const&)> callback) const;
93
94 MCAPI ::WeakRef<::Dimension> getDimension(::DimensionType dimensionType) const;
95
96 MCAPI ::std::optional<::DimensionDefinitionGroup::DimensionDefinition>
97 getDimensionDefinition(::std::string const& dimensionName) const;
98
99 MCFOLD ::DimensionDefinitionGroup& getDimensionDefinitionGroup();
100
101 MCAPI ::DimensionType getDimensionId(::std::string_view name) const;
102
103#ifdef LL_PLAT_C
104 MCAPI ::std::string getDimensionName(::DimensionType type) const;
105#endif
106
107 MCAPI ::WeakRef<::Dimension> getOrCreateDimension(::std::string_view dimensionName);
108
109 MCAPI ::WeakRef<::Dimension> getOrCreateDimension(::DimensionType dimensionType);
110
111 MCAPI ::WeakRef<::Dimension> getRandomDimension(::Random& random);
112
113 MCAPI bool hasDimensions() const;
114
115 MCAPI bool isDimensionTypeActive(::DimensionType type) const;
116
117 MCAPI void serverInitialize(
118 ::ILevelStorageManagerConnector& levelStorageManagerConnector,
119 ::DimensionDefinitionGroup dimensionDefinitionGroup
120 );
121
122 MCAPI void serverLoadDimensionNameIdStoreTable(::LevelStorage const& levelStorage);
123
124 MCAPI ::std::optional<::DimensionType> serverRegisterCustomDimension(::std::string_view name);
125
126 MCAPI void serverSaveDimensionNameIdStoreTable(::LevelStorage& levelStorage) const;
127
128 MCAPI void shutdown();
129 // NOLINTEND
130
131public:
132 // constructor thunks
133 // NOLINTBEGIN
134 MCAPI void* $ctor(::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> dimensionFactory);
135
136#ifdef LL_PLAT_C
137 MCAPI void* $ctor(
138 ::Bedrock::NotNullNonOwnerPtr<::IDimensionFactory> dimensionFactory,
139 ::DimensionDefinitionGroup dimensionDefinitions
140 );
141#endif
142 // NOLINTEND
143
144public:
145 // destructor thunk
146 // NOLINTBEGIN
147 MCAPI void $dtor();
148 // NOLINTEND
149
150public:
151 // virtual function thunks
152 // NOLINTBEGIN
153 MCFOLD ::Bedrock::PubSub::Connector<void(::DimensionManager&)>&
154 $getOnReadyForCustomDimensionRegistrationConnector();
155
156 MCFOLD ::Bedrock::PubSub::Connector<void(::Dimension&)>& $getOnNewDimensionCreatedConnector();
157
158
159 // NOLINTEND
160
161public:
162 // vftables
163 // NOLINTBEGIN
164 MCNAPI static void** $vftable();
165 // NOLINTEND
166};
Definition Publisher.h:8
Definition DimensionDefinitionGroup.h:19
static MCAPI void ** $vftable()
Definition DimensionRegistry.h:16
Definition Dimension.h:89
Definition IDimensionFactory.h:15
Definition IDimensionManagerConnector.h:14
Definition ILevelStorageManagerConnector.h:13
Definition LevelStorage.h:26
Definition Random.h:10
Definition DimensionIdType.h:8
Definition DimensionType.h:5