diff --git a/Source/Nakatomi/UI/LoadGameUserWidget.cpp b/Source/Nakatomi/UI/LoadGameUserWidget.cpp index 9fb71c1..734c8d6 100644 --- a/Source/Nakatomi/UI/LoadGameUserWidget.cpp +++ b/Source/Nakatomi/UI/LoadGameUserWidget.cpp @@ -3,6 +3,11 @@ #include "../UI/LoadGameUserWidget.h" +#include "SaveGameEntryUserWidget.h" +#include "Blueprint/WidgetTree.h" +#include "Kismet/GameplayStatics.h" +#include "Nakatomi/NakatomiGameInstance.h" + void ULoadGameUserWidget::NativeConstruct() { Super::NativeConstruct(); @@ -18,6 +23,22 @@ void ULoadGameUserWidget::NativeConstruct() CancelButton->OnUnhovered.AddUniqueDynamic(this, &ULoadGameUserWidget::CancelButtonUnhoveredDelegate); CancelButton->OnUnhovered.AddUniqueDynamic(this, &ULoadGameUserWidget::PlayUnhoveredSound); } + + UNakatomiGameInstance* gameInstance = Cast(UGameplayStatics::GetGameInstance(GetWorld())) + + if (gameInstance && IsValid(SaveGameEntryWidgetTemplate)) + { + TArray SaveFiles = gameInstance->GetAllSaveFilesFromDisk(); + + for (FNakatomiSaveFileInfo SaveFile : SaveFiles) + { + USaveGameEntryUserWidget* SaveGameEntry = WidgetTree->ConstructWidget( + SaveGameEntryWidgetTemplate, FName("SaveGameEntry")); + + SaveGameEntry->SetSaveInfo(SaveFile); + SavedGamesScrollBox->AddChild(SaveGameEntry); + } + } } void ULoadGameUserWidget::CancelButtonOnClicked() diff --git a/Source/Nakatomi/UI/LoadGameUserWidget.h b/Source/Nakatomi/UI/LoadGameUserWidget.h index 63ccd3c..b2a431c 100644 --- a/Source/Nakatomi/UI/LoadGameUserWidget.h +++ b/Source/Nakatomi/UI/LoadGameUserWidget.h @@ -26,6 +26,9 @@ public: UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UScrollBox* SavedGamesScrollBox; + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) + TSubclassOf SaveGameEntryWidgetTemplate; + public: virtual void NativeConstruct() override; diff --git a/Source/Nakatomi/UI/SaveGameEntryUserWidget.cpp b/Source/Nakatomi/UI/SaveGameEntryUserWidget.cpp index 06a0b13..8ca4fa8 100644 --- a/Source/Nakatomi/UI/SaveGameEntryUserWidget.cpp +++ b/Source/Nakatomi/UI/SaveGameEntryUserWidget.cpp @@ -20,12 +20,17 @@ void USaveGameEntryUserWidget::NativeConstruct() } } -void USaveGameEntryUserWidget::SetSaveInfo() +void USaveGameEntryUserWidget::SetSaveInfo(FNakatomiSaveFileInfo SaveFile) { + SaveFileInfo = SaveFile; + PlayerNameTextBlock->SetText(FText::FromString(SaveFileInfo.PlayerName)); + CurrentLevelTextBlock->SetText(FText::FromString(SaveFileInfo.CurrentLevel)); + DateTimeSavedTextBlock->SetText(FText::FromString(SaveFileInfo.DateTimeSaved)); } void USaveGameEntryUserWidget::LoadSaveButtonOnClicked() { + // TODO: implement loading of stuff } void USaveGameEntryUserWidget::LoadSaveButtonHoveredDelegate() diff --git a/Source/Nakatomi/UI/SaveGameEntryUserWidget.h b/Source/Nakatomi/UI/SaveGameEntryUserWidget.h index cbdfc7b..c740eb0 100644 --- a/Source/Nakatomi/UI/SaveGameEntryUserWidget.h +++ b/Source/Nakatomi/UI/SaveGameEntryUserWidget.h @@ -5,6 +5,7 @@ #include "CoreMinimal.h" #include "NakatomiInteractiveWidget.h" #include "Components/Button.h" +#include "Nakatomi/NakatomiSaveFileInfo.h" #include "SaveGameEntryUserWidget.generated.h" /** @@ -29,11 +30,14 @@ public: UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UTextBlock* DateTimeSavedTextBlock; +private: + FNakatomiSaveFileInfo SaveFileInfo; + public: virtual void NativeConstruct() override; UFUNCTION() - void SetSaveInfo(); + void SetSaveInfo(FNakatomiSaveFileInfo SaveFile); private: UFUNCTION()