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