// Copyright ExByte Studios. Item Interaction Ecosystem.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/SaveGame.h"
#include "ItemInstanceData.h"
#include "InventoryContainer.h"
#include "ItemSaveGame.generated.h"

/** Saved snapshot of one inventory (section 26). Only ids/state are kept. */
USTRUCT(BlueprintType)
struct ITEMINVENTORY_API FInventorySaveData
{
	GENERATED_BODY()

	UPROPERTY(SaveGame)
	TArray<FItemInstanceData> Items;

	UPROPERTY(SaveGame)
	TArray<FInventoryContainer> Containers;
};

/** SaveGame object holding any number of named inventory snapshots. */
UCLASS()
class ITEMINVENTORY_API UItemSaveGame : public USaveGame
{
	GENERATED_BODY()

public:
	/** Keyed by a stable inventory id chosen by the game (e.g. "Player0", a chest guid). */
	UPROPERTY(SaveGame)
	TMap<FName, FInventorySaveData> Inventories;
};
