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/UniqueOwnerPointer.h"
7#include "mc/deps/core/utility/pub_sub/Connector.h"
8#include "mc/deps/core/utility/pub_sub/Publisher.h"
9#include "mc/deps/core/utility/pub_sub/Subscription.h"
10#include "mc/world/level/storage/ILevelStorageManagerConnector.h"
11#include "mc/world/level/storage/SavedDataStorage.h"
12
13// auto generated forward declare list
14// clang-format off
15class Dimension;
20class LevelStorage;
21class Player;
23namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
24// clang-format on
25
26class LevelStorageManager : public ::ILevelStorageManagerConnector {
27public:
28 // member variables
29 // NOLINTBEGIN
30 ::ll::TypedStorage<8, 16, ::gsl::not_null<::Bedrock::UniqueOwnerPointer<::LevelStorage>> const> mLevelStorage;
31 ::ll::TypedStorage<8, 80, ::SavedDataStorage> mSavedDataStorage;
32 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::GameDataSaveTimer>>> mGameDataSaveTimer;
33 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::UserStorageChecker>>> mUserStorageChecker;
34 ::ll::TypedStorage<
35 8,
36 128,
38 mSavePublisher;
39 ::ll::TypedStorage<
40 8,
41 128,
43 mSaveGameDataPublisher;
44 ::ll::TypedStorage<
45 8,
46 128,
48 mSaveLevelDataPublisher;
49 ::ll::TypedStorage<
50 8,
51 128,
53 mCanStartSaveTimerCheckPublisher;
54 ::ll::TypedStorage<
55 8,
56 128,
58 mOnStartLeaveGamePublisher;
60 mOnAppSuspendPublisher;
61 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnPlayerDeathSubscription;
62 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mOnDimensionCreatedSubscription;
63 ::ll::TypedStorage<1, 1, bool> mIsLevelTearingDown;
64 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
65 ::ll::TypedStorage<4, 4, uint> mPollSaveGameStatisticsCount;
66 // NOLINTEND
67
68public:
69 // prevent constructor by default
70 LevelStorageManager& operator=(LevelStorageManager const&);
71 LevelStorageManager(LevelStorageManager const&);
72 LevelStorageManager();
73
74public:
75 // virtual functions
76 // NOLINTBEGIN
77 virtual ~LevelStorageManager() /*override*/ = default;
78
79 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnSaveConnector() /*override*/;
80
81 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnSaveGameDataConnector() /*override*/;
82
83 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnSaveLevelDataConnector() /*override*/;
84
85 virtual ::Bedrock::PubSub::Connector<void(bool&)>& getOnCanStartGameSaveTimerCheckConnector() /*override*/;
86
87 virtual ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& getOnStartLeaveGameConnector() /*override*/;
88
89 virtual ::Bedrock::PubSub::Connector<void()>& getOnAppSuspendConnector() /*override*/;
90 // NOLINTEND
91
92public:
93 // member functions
94 // NOLINTBEGIN
95 MCAPI LevelStorageManager(
97 ::std::unique_ptr<::GameDataSaveTimer> gameDataSaveTimer,
98 ::std::unique_ptr<::UserStorageChecker> userStorageChecker,
99 ::IMinecraftEventing& eventing
100 );
101
102 MCAPI void _onNewDimensionCreated(::Dimension& dimension);
103
104 MCAPI void _savePlayer(::Player& player);
105
106 MCAPI void initializeWithDimensionManager(::IDimensionManagerConnector& dimensionManagerConnector);
107
108 MCAPI void initializeWithPlayerDeathManager(::IPlayerDeathManagerConnector& playerDeathManagerConnector);
109
110 MCAPI void onStartLeaveGame();
111
112 MCAPI void save(::std::chrono::steady_clock::time_point currentTime);
113
114 MCAPI void saveGameData(::std::chrono::steady_clock::time_point currentTime);
115
116 MCAPI void saveLevelData();
117
118 MCAPI void trySaveGameData(::std::chrono::steady_clock::time_point currentTime);
119 // NOLINTEND
120
121public:
122 // constructor thunks
123 // NOLINTBEGIN
124 MCAPI void* $ctor(
126 ::std::unique_ptr<::GameDataSaveTimer> gameDataSaveTimer,
127 ::std::unique_ptr<::UserStorageChecker> userStorageChecker,
128 ::IMinecraftEventing& eventing
129 );
130 // NOLINTEND
131
132public:
133 // virtual function thunks
134 // NOLINTBEGIN
135#ifdef LL_PLAT_S
136 MCFOLD ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveConnector();
137#else // LL_PLAT_C
138 MCAPI ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveConnector();
139#endif
140
141 MCAPI ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveGameDataConnector();
142
143 MCFOLD ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnSaveLevelDataConnector();
144
145 MCAPI ::Bedrock::PubSub::Connector<void(bool&)>& $getOnCanStartGameSaveTimerCheckConnector();
146
147 MCAPI ::Bedrock::PubSub::Connector<void(::LevelStorage&)>& $getOnStartLeaveGameConnector();
148
149 MCAPI ::Bedrock::PubSub::Connector<void()>& $getOnAppSuspendConnector();
150
151
152 // NOLINTEND
153};
Definition Publisher.h:25
Definition UniqueOwnerPointer.h:11
Definition Dimension.h:86
Definition GameDataSaveTimer.h:8
Definition IDimensionManagerConnector.h:14
Definition ILevelStorageManagerConnector.h:13
Definition IMinecraftEventing.h:145
Definition IPlayerDeathManagerConnector.h:13
Definition LevelStorage.h:25
Definition Player.h:129
Definition UserStorageChecker.h:12