Completed phase 1

This commit is contained in:
2026-05-25 14:14:52 +03:00
parent 799fc8a4ae
commit 43ddad9217
22 changed files with 255 additions and 55 deletions
@@ -8,10 +8,10 @@
UGlobalSaveGameData* UGlobalSaveGameData::CreateNewSaveGame()
{
UGlobalSaveGameData* NewSave = Cast<UGlobalSaveGameData>(UGameplayStatics::CreateSaveGameObject(StaticClass()));
NewSave->Money = STARTING_MONEY;
if (!NewSave)
return nullptr;
NewSave->Money = STARTING_MONEY;
return NewSave;
}
@@ -41,12 +41,7 @@ UGlobalSaveGameData* UGlobalSaveGameData::LoadGame(const FString& SlotName)
return nullptr;
}
bool UGlobalSaveGameData::SaveGame(const FString& SlotName)
bool UGlobalSaveGameData::SaveGame(UGlobalSaveGameData* SaveGameData, const FString& SlotName)
{
if (UGlobalSaveGameData* Save = CreateNewSaveGame())
{
return UGameplayStatics::SaveGameToSlot(Save, SlotName, SLOT_PLAYER);
}
return false;
return UGameplayStatics::SaveGameToSlot(SaveGameData, SlotName, SLOT_PLAYER);
}
@@ -17,7 +17,7 @@ class NAKEDDESIRE_API UGlobalSaveGameData : public USaveGame
public:
static UGlobalSaveGameData* LoadOrCreateSaveGame(const FString& SlotName = DefaultSaveSlotName);
static UGlobalSaveGameData* LoadGame(const FString& SlotName = DefaultSaveSlotName);
static bool SaveGame(const FString& SlotName = DefaultSaveSlotName);
static bool SaveGame(UGlobalSaveGameData* SaveGameData, const FString& SlotName = DefaultSaveSlotName);
UPROPERTY(SaveGame)
bool HaveSeenTutorial = false;
@@ -31,6 +31,9 @@ public:
UPROPERTY(SaveGame)
TArray<FItemSaveRecord> EquippedItems;
UPROPERTY(SaveGame)
TArray<FItemSaveRecord> DroppedItems;
UPROPERTY(SaveGame)
int32 DaysPassed = 0;
+15 -1
View File
@@ -1,9 +1,11 @@
#pragma once
#include "CoreMinimal.h"
#include "NakedDesire/Clothing/ClothingItemInstance.h"
#include "NakedDesire/Clothing/ClothingItem.h"
#include "ItemSaveRecord.generated.h"
class UClothingItem;
class UClothingItemInstance;
USTRUCT()
struct NAKEDDESIRE_API FItemSaveRecord
@@ -21,4 +23,16 @@ struct NAKEDDESIRE_API FItemSaveRecord
UPROPERTY(SaveGame)
FGuid ParentId;
UPROPERTY(SaveGame)
FTransform WorldTransform;
void Init(const UClothingItemInstance* ClothingItemInstance);
};
inline void FItemSaveRecord::Init(const UClothingItemInstance* ClothingItemInstance)
{
InstanceId = ClothingItemInstance->GetInstanceId();
Definition = ClothingItemInstance->GetClothingItem();
Condition = ClothingItemInstance->Condition;
}
+13 -3
View File
@@ -4,12 +4,12 @@
void USaveSubsystem::LoadGame(const FString& SlotName)
{
UGlobalSaveGameData* Save = UGlobalSaveGameData::LoadGame(SlotName);
CurrentSave = UGlobalSaveGameData::LoadGame(SlotName);
}
bool USaveSubsystem::SaveGame(const FString& SlotName)
bool USaveSubsystem::SaveGame(const FString& SlotName) const
{
return UGlobalSaveGameData::SaveGame(SlotName);
return UGlobalSaveGameData::SaveGame(CurrentSave, SlotName);
}
void USaveSubsystem::AddItem(const FItemSaveRecord& Record)
@@ -31,3 +31,13 @@ void USaveSubsystem::Initialize(FSubsystemCollectionBase& Collection)
LoadGame();
}
UGlobalSaveGameData* USaveSubsystem::GetCurrentSave()
{
if (!CurrentSave)
{
CurrentSave = UGlobalSaveGameData::LoadOrCreateSaveGame(ActiveSlotName);
}
return CurrentSave;
}
+3 -1
View File
@@ -15,7 +15,7 @@ class NAKEDDESIRE_API USaveSubsystem : public UGameInstanceSubsystem
public:
void LoadGame(const FString& SlotName = DefaultSaveSlotName);
bool SaveGame(const FString& SlotName = DefaultSaveSlotName);
bool SaveGame(const FString& SlotName = DefaultSaveSlotName) const;
const TArray<FItemSaveRecord>& GetItems() const { return Items; }
void AddItem(const FItemSaveRecord& Record);
@@ -23,6 +23,8 @@ public:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
UGlobalSaveGameData* GetCurrentSave();
private:
UPROPERTY()
FString ActiveSlotName = DefaultSaveSlotName;