41 lines
1020 B
C++
41 lines
1020 B
C++
// © 2025 Naked People Team. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "NakedDesire/Global/Constants.h"
|
|
#include "Subsystems/GameInstanceSubsystem.h"
|
|
#include "SaveSubsystem.generated.h"
|
|
|
|
class UGlobalSaveGameData;
|
|
struct FItemSaveRecord;
|
|
|
|
UCLASS()
|
|
class NAKEDDESIRE_API USaveSubsystem : public UGameInstanceSubsystem
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
void LoadGame(const FString& SlotName = DefaultSaveSlotName);
|
|
bool SaveGame(const FString& SlotName = DefaultSaveSlotName) const;
|
|
|
|
const TArray<FItemSaveRecord>& GetItems() const { return Items; }
|
|
void AddItem(const FItemSaveRecord& Record);
|
|
void RemoveItem(const FGuid& InstanceId);
|
|
|
|
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
|
|
|
|
UGlobalSaveGameData* GetCurrentSave();
|
|
|
|
private:
|
|
void PopulateStartingData(UGlobalSaveGameData* Save) const;
|
|
|
|
UPROPERTY()
|
|
FString ActiveSlotName = DefaultSaveSlotName;
|
|
|
|
UPROPERTY()
|
|
TArray<FItemSaveRecord> Items;
|
|
|
|
UPROPERTY()
|
|
TObjectPtr<UGlobalSaveGameData> CurrentSave;
|
|
}; |