lyra_game_ue/Source/LyraGame/Settings/LyraGameSettingRegistry_Gameplay.cpp
Goran Lazarevski 3bcab085f8 Initial commit
2025-03-20 11:06:26 +01:00

103 lines
4.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraGameSettingRegistry.h"
#include "GameSettingCollection.h"
#include "EditCondition/WhenPlayingAsPrimaryPlayer.h"
#include "EditCondition/WhenPlatformHasTrait.h"
#include "CustomSettings/LyraSettingValueDiscrete_Language.h"
#include "LyraSettingsLocal.h"
#include "GameSettingValueDiscreteDynamic.h"
#include "Player/LyraLocalPlayer.h"
#include "Replays/LyraReplaySubsystem.h"
#define LOCTEXT_NAMESPACE "Lyra"
UGameSettingCollection* ULyraGameSettingRegistry::InitializeGameplaySettings(ULyraLocalPlayer* InLocalPlayer)
{
UGameSettingCollection* Screen = NewObject<UGameSettingCollection>();
Screen->SetDevName(TEXT("GameplayCollection"));
Screen->SetDisplayName(LOCTEXT("GameplayCollection_Name", "Gameplay"));
Screen->Initialize(InLocalPlayer);
{
UGameSettingCollection* LanguageSubsection = NewObject<UGameSettingCollection>();
LanguageSubsection->SetDevName(TEXT("LanguageCollection"));
LanguageSubsection->SetDisplayName(LOCTEXT("LanguageCollection_Name", "Language"));
Screen->AddSetting(LanguageSubsection);
//----------------------------------------------------------------------------------
{
ULyraSettingValueDiscrete_Language* Setting = NewObject<ULyraSettingValueDiscrete_Language>();
Setting->SetDevName(TEXT("Language"));
Setting->SetDisplayName(LOCTEXT("LanguageSetting_Name", "Language"));
Setting->SetDescriptionRichText(LOCTEXT("LanguageSetting_Description", "The language of the game."));
#if WITH_EDITOR
if (GIsEditor)
{
Setting->SetDescriptionRichText(LOCTEXT("LanguageSetting_WithEditor_Description", "The language of the game.\n\n<text color=\"#ffff00\">WARNING: Language changes will not affect PIE, you'll need to run with -game to test this, or change your PIE language options in the editor preferences.</>"));
}
#endif
Setting->AddEditCondition(FWhenPlayingAsPrimaryPlayer::Get());
LanguageSubsection->AddSetting(Setting);
}
//----------------------------------------------------------------------------------
}
{
UGameSettingCollection* ReplaySubsection = NewObject<UGameSettingCollection>();
ReplaySubsection->SetDevName(TEXT("ReplayCollection"));
ReplaySubsection->SetDisplayName(LOCTEXT("ReplayCollection_Name", "Replays"));
Screen->AddSetting(ReplaySubsection);
//----------------------------------------------------------------------------------
{
UGameSettingValueDiscreteDynamic_Bool* Setting = NewObject<UGameSettingValueDiscreteDynamic_Bool>();
Setting->SetDevName(TEXT("RecordReplay"));
Setting->SetDisplayName(LOCTEXT("RecordReplaySetting_Name", "Record Replays"));
Setting->SetDescriptionRichText(LOCTEXT("RecordReplaySetting_Description", "Automatically record game replays. Experimental feature, recorded demos may have playback issues."));
Setting->SetDynamicGetter(GET_LOCAL_SETTINGS_FUNCTION_PATH(ShouldAutoRecordReplays));
Setting->SetDynamicSetter(GET_LOCAL_SETTINGS_FUNCTION_PATH(SetShouldAutoRecordReplays));
Setting->SetDefaultValue(GetDefault<ULyraSettingsLocal>()->ShouldAutoRecordReplays());
Setting->AddEditCondition(FWhenPlayingAsPrimaryPlayer::Get());
Setting->AddEditCondition(FWhenPlatformHasTrait::KillIfMissing(ULyraReplaySubsystem::GetPlatformSupportTraitTag(), TEXT("Platform does not support saving replays")));
ReplaySubsection->AddSetting(Setting);
}
//----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
{
UGameSettingValueDiscreteDynamic_Number* Setting = NewObject<UGameSettingValueDiscreteDynamic_Number>();
Setting->SetDevName(TEXT("KeepReplayLimit"));
Setting->SetDisplayName(LOCTEXT("KeepReplayLimitSetting_Name", "Keep Replay Limit"));
Setting->SetDescriptionRichText(LOCTEXT("KeepReplayLimitSetting_Description", "Number of saved replays to keep, set to 0 for infinite."));
Setting->SetDynamicGetter(GET_LOCAL_SETTINGS_FUNCTION_PATH(GetNumberOfReplaysToKeep));
Setting->SetDynamicSetter(GET_LOCAL_SETTINGS_FUNCTION_PATH(SetNumberOfReplaysToKeep));
Setting->SetDefaultValue(GetDefault<ULyraSettingsLocal>()->GetNumberOfReplaysToKeep());
for (int32 Index = 0; Index <= 20; Index++)
{
Setting->AddOption(Index, FText::AsNumber(Index));
}
Setting->AddEditCondition(FWhenPlayingAsPrimaryPlayer::Get());
Setting->AddEditCondition(FWhenPlatformHasTrait::KillIfMissing(ULyraReplaySubsystem::GetPlatformSupportTraitTag(), TEXT("Platform does not support saving replays")));
ReplaySubsection->AddSetting(Setting);
}
//----------------------------------------------------------------------------------
}
return Screen;
}
#undef LOCTEXT_NAMESPACE