// Fill out your copyright notice in the Description page of Project Settings. #include "FunctionLibraries/LuckyRobotsFunctionLibrary.h" #include "Core/LuckyRobotsGameInstance.h" #include "GameFramework/GameUserSettings.h" #include "Kismet/GameplayStatics.h" #include "Settings/SG_CaptureSetting.h" ULuckyRobotsGameInstance* ULuckyRobotsFunctionLibrary::GetLuckyRobotsGameInstance(const UObject* WorldContextObject) { if (WorldContextObject && WorldContextObject->GetWorld()) { return Cast(WorldContextObject->GetWorld()->GetGameInstance()); } return nullptr; } TArray ULuckyRobotsFunctionLibrary::GetActiveRobotDataList(const UObject* WorldContextObject) { TArray RobotDataList; if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject)) { if (GameInstance->RobotDataDataTable) { FString ContextString; TArray RowNames = GameInstance->RobotDataDataTable->GetRowNames(); for (const FName& RowName : RowNames) { FRobotData* pRow = GameInstance->RobotDataDataTable->FindRow(RowName, ContextString); if (pRow && pRow->bActive) { RobotDataList.Add(*pRow); } } } } return RobotDataList; } TArray ULuckyRobotsFunctionLibrary::GetActiveLevelDataList(const UObject* WorldContextObject) { TArray LevelDataList; if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject)) { if (GameInstance->LevelDataTable) { FString ContextString; TArray RowNames = GameInstance->LevelDataTable->GetRowNames(); for (const FName& RowName : RowNames) { FLevelData* pRow = GameInstance->LevelDataTable->FindRow(RowName, ContextString); if (pRow && pRow->bActive) { LevelDataList.Add(*pRow); } } } } return LevelDataList; } void ULuckyRobotsFunctionLibrary::UpdateQualitySettings(const UObject* WorldContextObject) { if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject)) { GameInstance->UpdateQualitySettings(); } } FCaptureSettingsData ULuckyRobotsFunctionLibrary::LoadCaptureSettings(const UObject* WorldContextObject) { 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"); USG_CaptureSetting* SaveGame = Cast(UGameplayStatics::LoadGameFromSlot("SGCaptureSettings", 0)); if (SaveGame) { if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject)) { GameInstance->CurrentCaptureSettingsData = SaveGame->CaptureSetting; } return SaveGame->CaptureSetting; } else { SaveGame = Cast(UGameplayStatics::CreateSaveGameObject(USG_CaptureSetting::StaticClass())); if (SaveGame) { SaveGame->CaptureSetting = DefaultCaptureSetting; UGameplayStatics::SaveGameToSlot(SaveGame, "SGCaptureSettings", 0); } } return DefaultCaptureSetting; } void ULuckyRobotsFunctionLibrary::SaveCaptureSettings(const UObject* WorldContextObject, FCaptureSettingsData CaptureSetting) { if (ULuckyRobotsGameInstance* GameInstance = GetLuckyRobotsGameInstance(WorldContextObject)) { GameInstance->CurrentCaptureSettingsData = CaptureSetting; } USG_CaptureSetting* SaveGame = Cast(UGameplayStatics::LoadGameFromSlot("SGCaptureSettings", 0)); if (!SaveGame) { SaveGame = Cast(UGameplayStatics::CreateSaveGameObject(USG_CaptureSetting::StaticClass())); } if (SaveGame) { SaveGame->CaptureSetting = CaptureSetting; UGameplayStatics::SaveGameToSlot(SaveGame, "SGCaptureSettings", 0); } }