1#pragma once
2
3namespace al {
4struct ActorInitInfo;
5class PlacementId;
6} // namespace al
7class GameDataHolder;
8
9class SaveObjInfo {
10public:
11 enum class SaveType { Write, NoWriteInSameWorld, NoWriteResetMinigame, NoWriteInSameScenario };
12
13 static SaveObjInfo* createSaveObjInfoWriteSaveData(const al::ActorInitInfo& initInfo,
14 const al::PlacementId* placementId);
15 static SaveObjInfo*
16 createSaveObjInfoNoWriteSaveDataInSameWorld(const al::ActorInitInfo& initInfo,
17 const al::PlacementId* placementId);
18 static SaveObjInfo*
19 createSaveObjInfoNoWriteSaveDataInSameWorldResetMiniGame(const al::ActorInitInfo& initInfo,
20 const al::PlacementId* placementId);
21 static SaveObjInfo*
22 createSaveObjInfoNoWriteSaveDataInSameScenario(const al::ActorInitInfo& initInfo,
23 const al::PlacementId* placementId);
24
25 SaveObjInfo(const al::ActorInitInfo& initInfo, const al::PlacementId* placementId,
26 SaveType saveType);
27
28 void on();
29 void off();
30 bool isOn() const;
31 void resetByPlacementId(al::PlacementId* id);
32 bool checkIsOn() const;
33
34private:
35 const al::PlacementId* mPlacementId;
36 bool mIsOn = false;
37 SaveType mSaveType;
38 GameDataHolder* mGameDataHolder = nullptr;
39};
40