44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
// © 2025 Naked People Team. All Rights Reserved.
|
|
|
|
|
|
#include "Wardrobe.h"
|
|
#include "Kismet/GameplayStatics.h"
|
|
#include "NakedDesire/SaveGame/GlobalSaveGameData.h"
|
|
#include "NakedDesire/SaveGame/ItemSaveRecord.h"
|
|
#include "NakedDesire/SaveGame/SaveSubsystem.h"
|
|
|
|
void AWardrobe::AddItem(UClothingItemInstance* ClothingItemInstance)
|
|
{
|
|
USaveSubsystem* SaveSubsystem = UGameplayStatics::GetGameInstance(GetWorld())->GetSubsystem<USaveSubsystem>();
|
|
|
|
ClothingItems.Push(ClothingItemInstance);
|
|
FItemSaveRecord ItemSaveRecord;
|
|
ItemSaveRecord.Init(ClothingItemInstance);
|
|
|
|
SaveSubsystem->GetCurrentSave()->WardrobeItems.Push(ItemSaveRecord);
|
|
}
|
|
|
|
void AWardrobe::RemoveItem(UClothingItemInstance* ClothingItemInstance) const
|
|
{
|
|
USaveSubsystem* SaveSubsystem = UGameplayStatics::GetGameInstance(GetWorld())->GetSubsystem<USaveSubsystem>();
|
|
|
|
SaveSubsystem->GetCurrentSave()->WardrobeItems.RemoveAll([ClothingItemInstance](const FItemSaveRecord& Item)
|
|
{
|
|
return Item.InstanceId == ClothingItemInstance->GetInstanceId();
|
|
});
|
|
}
|
|
|
|
void AWardrobe::BeginPlay()
|
|
{
|
|
Super::BeginPlay();
|
|
|
|
USaveSubsystem* SaveSubsystem = UGameplayStatics::GetGameInstance(GetWorld())->GetSubsystem<USaveSubsystem>();
|
|
UGlobalSaveGameData* SaveGame = SaveSubsystem->GetCurrentSave();
|
|
|
|
for (const FItemSaveRecord& ItemSaveRecord : SaveGame->WardrobeItems)
|
|
{
|
|
UClothingItemInstance* NewItemInstance = UClothingItemInstance::CreateFromSave(this, ItemSaveRecord);
|
|
ClothingItems.Push(NewItemInstance);
|
|
}
|
|
}
|