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;
44 mSaveGameDataPublisher;
49 mSaveLevelDataPublisher;
54 mCanStartSaveTimerCheckPublisher;
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;
71 LevelStorageManager& operator=(LevelStorageManager
const&);
72 LevelStorageManager(LevelStorageManager
const&);
73 LevelStorageManager();
78 virtual ~LevelStorageManager() ;
80 virtual ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& getOnSaveConnector() ;
82 virtual ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& getOnSaveGameDataConnector() ;
84 virtual ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& getOnSaveLevelDataConnector() ;
86 virtual ::Bedrock::PubSub::Connector<void(
bool&)>& getOnCanStartGameSaveTimerCheckConnector() ;
88 virtual ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& getOnStartLeaveGameConnector() ;
90 virtual ::Bedrock::PubSub::Connector<void()>& getOnAppSuspendConnector() ;
96 MCAPI LevelStorageManager(
98 ::std::unique_ptr<::GameDataSaveTimer> gameDataSaveTimer,
99 ::std::unique_ptr<::UserStorageChecker> userStorageChecker,
103 MCFOLD
void _onNewDimensionCreated(
::Dimension& dimension);
105 MCAPI
void _savePlayer(
::Player& player);
107 MCFOLD ::Bedrock::NotNullNonOwnerPtr<::LevelStorage> getLevelStorage();
109 MCFOLD ::SavedDataStorage& getSavedDataStorage();
115 MCAPI
void onAppSuspend();
117 MCAPI
void onLevelTearingDown();
119 MCAPI
void onStartLeaveGame();
121 MCAPI ::std::shared_ptr<void*> requestTimedStorageDeferment();
123 MCAPI
void save(::std::chrono::steady_clock::time_point currentTime);
125 MCAPI
void saveGameData(::std::chrono::steady_clock::time_point currentTime);
127 MCAPI
void saveLevelData();
129 MCAPI
void trySaveGameData(::std::chrono::steady_clock::time_point currentTime);
131 MCAPI
void tryStartGameDataSaveTimerIfNotSet(::std::chrono::steady_clock::time_point currentTime);
139 ::std::unique_ptr<::GameDataSaveTimer> gameDataSaveTimer,
140 ::std::unique_ptr<::UserStorageChecker> userStorageChecker,
154 MCFOLD ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& $getOnSaveConnector();
156 MCFOLD ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& $getOnSaveGameDataConnector();
158 MCFOLD ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& $getOnSaveLevelDataConnector();
160 MCAPI ::Bedrock::PubSub::Connector<void(
bool&)>& $getOnCanStartGameSaveTimerCheckConnector();
162 MCAPI ::Bedrock::PubSub::Connector<void(
::LevelStorage&)>& $getOnStartLeaveGameConnector();
164 MCFOLD ::Bedrock::PubSub::Connector<void()>& $getOnAppSuspendConnector();