LeviLamina
Loading...
Searching...
No Matches
LevelStorageManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/core/utility/UniqueOwnerPointer.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/world/level/storage/ILevelStorageManagerConnector.h"
12#include "mc/world/level/storage/SavedDataStorage.h"
13
14// auto generated forward declare list
15// clang-format off
16class Dimension;
21class LevelStorage;
22class Player;
24namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
25// clang-format on
26
27class LevelStorageManager : public ::ILevelStorageManagerConnector {
28public:
29 // member variables
30 // NOLINTBEGIN
31 ::ll::TypedStorage<8, 16, ::gsl::not_null<::Bedrock::UniqueOwnerPointer<::LevelStorage>> const> mLevelStorage;
32 ::ll::TypedStorage<8, 80, ::SavedDataStorage> mSavedDataStorage;
33 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::GameDataSaveTimer>>> mGameDataSaveTimer;
34 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::UserStorageChecker>>> mUserStorageChecker;
35 ::ll::TypedStorage<
36 8,
37 128,
39 mSavePublisher;
40 ::ll::TypedStorage<
41 8,
42 128,
44 mSaveGameDataPublisher;
45 ::ll::TypedStorage<
46 8,
47 128,
49 mSaveLevelDataPublisher;
50 ::ll::TypedStorage<
51 8,
52 128,
54 mCanStartSaveTimerCheckPublisher;
55 ::ll::TypedStorage<
56 8,
57 128,
59 mOnStartLeaveGamePublisher;
61 mOnAppSuspendPublisher;
62 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnPlayerDeathSubscription;
63 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnDimensionCreatedSubscription;
64 ::ll::TypedStorage<1, 1, bool> mIsLevelTearingDown;
65 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
66 ::ll::TypedStorage<4, 4, uint> mPollSaveGameStatisticsCount;
67 // NOLINTEND
68
69public:
70 // prevent constructor by default
71 LevelStorageManager& operator=(LevelStorageManager const&);
72 LevelStorageManager(LevelStorageManager const&);
73 LevelStorageManager();
74
75public:
76 // virtual functions
77 // NOLINTBEGIN
78 virtual ~LevelStorageManager() /*override*/;
79
80 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnSaveConnector() /*override*/;
81
82 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnSaveGameDataConnector() /*override*/;
83
84 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnSaveLevelDataConnector() /*override*/;
85
86 virtual ::Bedrock::PubSub::Connector<void(bool&)>& getOnCanStartGameSaveTimerCheckConnector() /*override*/;
87
88 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnStartLeaveGameConnector() /*override*/;
89
90 virtual ::Bedrock::PubSub::Connector<void()>& getOnAppSuspendConnector() /*override*/;
91 // NOLINTEND
92
93public:
94 // member functions
95 // NOLINTBEGIN
96 MCAPI LevelStorageManager(
98 ::std::unique_ptr<::GameDataSaveTimer> gameDataSaveTimer,
99 ::std::unique_ptr<::UserStorageChecker> userStorageChecker,
100 ::IMinecraftEventing& eventing
101 );
102
103 MCFOLD void _onNewDimensionCreated(::Dimension& dimension);
104
105 MCAPI void _savePlayer(::Player& player);
106
107 MCFOLD ::Bedrock::NotNullNonOwnerPtr<::LevelStorage> getLevelStorage();
108
109 MCFOLD ::SavedDataStorage& getSavedDataStorage();
110
111 MCAPI void initializeWithDimensionManager(::IDimensionManagerConnector& dimensionManagerConnector);
112
113 MCAPI void initializeWithPlayerDeathManager(::IPlayerDeathManagerConnector& playerDeathManagerConnector);
114
115 MCAPI void onAppSuspend();
116
117 MCAPI void onLevelTearingDown();
118
119 MCAPI void onStartLeaveGame();
120
121 MCAPI ::std::shared_ptr<void*> requestTimedStorageDeferment();
122
123 MCAPI void save(::std::chrono::steady_clock::time_point currentTime);
124
125 MCAPI void saveGameData(::std::chrono::steady_clock::time_point currentTime);
126
127 MCAPI void saveLevelData();
128
129 MCAPI void trySaveGameData(::std::chrono::steady_clock::time_point currentTime);
130
131 MCAPI void tryStartGameDataSaveTimerIfNotSet(::std::chrono::steady_clock::time_point currentTime);
132 // NOLINTEND
133
134public:
135 // constructor thunks
136 // NOLINTBEGIN
137 MCAPI void* $ctor(
139 ::std::unique_ptr<::GameDataSaveTimer> gameDataSaveTimer,
140 ::std::unique_ptr<::UserStorageChecker> userStorageChecker,
141 ::IMinecraftEventing& eventing
142 );
143 // NOLINTEND
144
145public:
146 // destructor thunk
147 // NOLINTBEGIN
148 MCAPI void $dtor();
149 // NOLINTEND
150
151public:
152 // virtual function thunks
153 // NOLINTBEGIN
154 MCFOLD ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveConnector();
155
156 MCFOLD ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveGameDataConnector();
157
158 MCFOLD ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveLevelDataConnector();
159
160 MCAPI ::Bedrock::PubSub::Connector<void(bool&)>& $getOnCanStartGameSaveTimerCheckConnector();
161
162 MCAPI ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnStartLeaveGameConnector();
163
164 MCFOLD ::Bedrock::PubSub::Connector<void()>& $getOnAppSuspendConnector();
165
166
167 // NOLINTEND
168
169public:
170 // vftables
171 // NOLINTBEGIN
172 MCNAPI static void** $vftable();
173 // NOLINTEND
174};
Definition Publisher.h:8
Definition UniqueOwnerPointer.h:11
Definition Dimension.h:88
Definition GameDataSaveTimer.h:5
Definition IDimensionManagerConnector.h:14
Definition ILevelStorageManagerConnector.h:13
Definition IMinecraftEventing.h:138
Definition IPlayerDeathManagerConnector.h:13
static MCAPI void ** $vftable()
Definition LevelStorage.h:26
Definition Player.h:136
Definition UserStorageChecker.h:13