Files
Naked-Desire/Source/NakedDesire/SaveGame/GlobalSaveGameData.h
T

69 lines
2.2 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/SaveGame.h"
#include "NakedDesire/Global/Constants.h"
#include "ItemSaveRecord.h"
#include "GlobalSaveGameData.generated.h"
class UItemInstance;
UCLASS()
class NAKEDDESIRE_API UGlobalSaveGameData : public USaveGame
{
GENERATED_BODY()
public:
static UGlobalSaveGameData* CreateNewSaveGame();
static UGlobalSaveGameData* LoadGame(const FString& SlotName = DefaultSaveSlotName);
static bool SaveGame(UGlobalSaveGameData* SaveGameData, const FString& SlotName = DefaultSaveSlotName);
UPROPERTY(SaveGame)
bool HaveSeenTutorial = false;
UPROPERTY(SaveGame)
float Money = 0;
FItemSaveRecord AddWardrobeItem(const UItemInstance* ItemInstance);
bool UpdateWardrobeItem(UItemInstance* ItemInstance);
bool RemoveWardrobeItem(UItemInstance* ItemInstance);
TArray<FItemSaveRecord> GetWardrobeItems() const { return WardrobeItems; }
FItemSaveRecord AddEquippedItem(const UItemInstance* ItemInstance);
void AddEquippedItem(const FItemSaveRecord& ItemRecord);
bool UpdateEquippedItem(UItemInstance* ItemInstance);
bool RemoveEquippedItem(UItemInstance* ItemInstance);
TArray<FItemSaveRecord> GetEquippedItems() const { return EquippedItems; }
FItemSaveRecord AddWorldItem(const UItemInstance* ItemInstance, FTransform Transform);
bool UpdateWorldItem(UItemInstance* ItemInstance, FTransform Transform);
bool RemoveWorldItem(UItemInstance* ItemInstance);
TArray<FItemSaveRecord> GetWorldItems() const { return WorldItems; }
UPROPERTY(SaveGame)
int32 DaysPassed = 0;
// Time of day in minutes since 00:00, range [0, 1440). Owned by UTimeOfDaySubsystem.
UPROPERTY(SaveGame)
float MinuteOfDay = DAY_START_HOUR * MINUTES_PER_HOUR; // start the campaign at 08:00
// Endless mode disables the weekly rent charge / eviction (§3.3).
UPROPERTY(SaveGame)
bool bEndlessMode = false;
// Day index of the most recent successful rent payment (book-keeping / bank UI).
UPROPERTY(SaveGame)
int32 LastRentChargeDay = 0;
private:
UPROPERTY(SaveGame)
TArray<FItemSaveRecord> WardrobeItems;
UPROPERTY(SaveGame)
TArray<FItemSaveRecord> EquippedItems;
UPROPERTY(SaveGame)
TArray<FItemSaveRecord> WorldItems;
};