2025-03-31 14:59:07 +08:00
|
|
|
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
|
|
|
|
|
2025-04-07 10:28:47 +08:00
|
|
|
#include "FunctionLibraries/LuckyRobotsFunctionLibrary.h"
|
|
|
|
#include "Core/LuckyRobotsGameInstance.h"
|
2025-04-01 11:04:11 +08:00
|
|
|
#include "GameFramework/GameUserSettings.h"
|
2025-04-02 13:40:55 +08:00
|
|
|
#include "Kismet/GameplayStatics.h"
|
2025-04-07 10:28:47 +08:00
|
|
|
#include "Settings/SG_CaptureSetting.h"
|
2025-04-01 11:04:11 +08:00
|
|
|
|
|
|
|
ULuckyRobotsGameInstance* ULuckyRobotsFunctionLibrary::GetLuckyRobotsGameInstance(const UObject* WorldContextObject)
|
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
if (WorldContextObject && WorldContextObject->GetWorld())
|
|
|
|
{
|
|
|
|
return Cast<ULuckyRobotsGameInstance>(WorldContextObject->GetWorld()->GetGameInstance());
|
|
|
|
}
|
|
|
|
return nullptr;
|
2025-04-01 11:04:11 +08:00
|
|
|
}
|
2025-03-31 14:59:07 +08:00
|
|
|
|
|
|
|
TArray<FRobotData> ULuckyRobotsFunctionLibrary::GetActiveRobotDataList(const UObject* WorldContextObject)
|
|
|
|
{
|
|
|
|
TArray<FRobotData> RobotDataList;
|
2025-04-07 11:32:45 +08:00
|
|
|
if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject))
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
if (GameInstance->RobotDataDataTable)
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
|
|
|
FString ContextString;
|
2025-04-07 11:32:45 +08:00
|
|
|
TArray<FName> RowNames = GameInstance->RobotDataDataTable->GetRowNames();
|
|
|
|
for (const FName& RowName : RowNames)
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
FRobotData* pRow = GameInstance->RobotDataDataTable->FindRow<FRobotData>(RowName, ContextString);
|
|
|
|
if (pRow && pRow->bActive)
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
RobotDataList.Add(*pRow);
|
2025-03-31 14:59:07 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return RobotDataList;
|
|
|
|
}
|
|
|
|
|
|
|
|
TArray<FLevelData> ULuckyRobotsFunctionLibrary::GetActiveLevelDataList(const UObject* WorldContextObject)
|
|
|
|
{
|
|
|
|
TArray<FLevelData> LevelDataList;
|
2025-04-07 11:32:45 +08:00
|
|
|
if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject))
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
if (GameInstance->LevelDataTable)
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
|
|
|
FString ContextString;
|
2025-04-07 11:32:45 +08:00
|
|
|
TArray<FName> RowNames = GameInstance->LevelDataTable->GetRowNames();
|
|
|
|
for (const FName& RowName : RowNames)
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
FLevelData* pRow = GameInstance->LevelDataTable->FindRow<FLevelData>(RowName, ContextString);
|
|
|
|
if (pRow && pRow->bActive)
|
2025-03-31 14:59:07 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
LevelDataList.Add(*pRow);
|
2025-03-31 14:59:07 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return LevelDataList;
|
2025-04-01 11:04:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void ULuckyRobotsFunctionLibrary::UpdateQualitySettings(const UObject* WorldContextObject)
|
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject))
|
2025-04-01 11:04:11 +08:00
|
|
|
{
|
2025-04-08 22:11:33 +08:00
|
|
|
GameInstance->UpdateQualitySettings();
|
2025-04-01 11:04:11 +08:00
|
|
|
}
|
2025-04-02 13:40:55 +08:00
|
|
|
}
|
|
|
|
|
2025-04-04 14:04:15 +08:00
|
|
|
FCaptureSettingsData ULuckyRobotsFunctionLibrary::LoadCaptureSettings(const UObject* WorldContextObject)
|
2025-04-02 13:40:55 +08:00
|
|
|
{
|
|
|
|
FCaptureSettingsData DefaultCaptureSetting;
|
|
|
|
DefaultCaptureSetting.FolderName = FText::FromString("robotdata");
|
|
|
|
DefaultCaptureSetting.FileName = FText::FromString("FILE");
|
|
|
|
DefaultCaptureSetting.WritesPerSec = FText::FromString("1");
|
|
|
|
DefaultCaptureSetting.NumberOfPeople = FText::FromString("1");
|
|
|
|
DefaultCaptureSetting.NumberOfObjects = FText::FromString("1");
|
|
|
|
DefaultCaptureSetting.NumberOfCaptures = FText::FromString("1");
|
|
|
|
|
2025-04-07 11:32:45 +08:00
|
|
|
USG_CaptureSetting* SaveGame = Cast<USG_CaptureSetting>(UGameplayStatics::LoadGameFromSlot("SGCaptureSettings", 0));
|
2025-04-02 13:40:55 +08:00
|
|
|
if (SaveGame)
|
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject))
|
2025-04-04 14:04:15 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
GameInstance->CurrentCaptureSettingsData = SaveGame->CaptureSetting;
|
2025-04-04 14:04:15 +08:00
|
|
|
}
|
2025-04-02 13:40:55 +08:00
|
|
|
return SaveGame->CaptureSetting;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SaveGame = Cast<USG_CaptureSetting>(UGameplayStatics::CreateSaveGameObject(USG_CaptureSetting::StaticClass()));
|
|
|
|
if (SaveGame)
|
|
|
|
{
|
|
|
|
SaveGame->CaptureSetting = DefaultCaptureSetting;
|
|
|
|
UGameplayStatics::SaveGameToSlot(SaveGame, "SGCaptureSettings", 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return DefaultCaptureSetting;
|
|
|
|
}
|
|
|
|
|
2025-04-04 14:04:15 +08:00
|
|
|
void ULuckyRobotsFunctionLibrary::SaveCaptureSettings(const UObject* WorldContextObject, FCaptureSettingsData CaptureSetting)
|
2025-04-02 13:40:55 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject))
|
2025-04-04 14:04:15 +08:00
|
|
|
{
|
2025-04-07 11:32:45 +08:00
|
|
|
GameInstance->CurrentCaptureSettingsData = CaptureSetting;
|
2025-04-04 14:04:15 +08:00
|
|
|
}
|
|
|
|
|
2025-04-07 11:32:45 +08:00
|
|
|
USG_CaptureSetting* SaveGame = Cast<USG_CaptureSetting>(UGameplayStatics::LoadGameFromSlot("SGCaptureSettings", 0));
|
2025-04-02 13:40:55 +08:00
|
|
|
if (!SaveGame)
|
|
|
|
{
|
|
|
|
SaveGame = Cast<USG_CaptureSetting>(UGameplayStatics::CreateSaveGameObject(USG_CaptureSetting::StaticClass()));
|
|
|
|
}
|
|
|
|
if (SaveGame)
|
|
|
|
{
|
|
|
|
SaveGame->CaptureSetting = CaptureSetting;
|
|
|
|
UGameplayStatics::SaveGameToSlot(SaveGame, "SGCaptureSettings", 0);
|
|
|
|
}
|
2025-04-07 11:32:45 +08:00
|
|
|
}
|