// 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(); Screen->SetDevName(TEXT("GameplayCollection")); Screen->SetDisplayName(LOCTEXT("GameplayCollection_Name", "Gameplay")); Screen->Initialize(InLocalPlayer); { UGameSettingCollection* LanguageSubsection = NewObject(); LanguageSubsection->SetDevName(TEXT("LanguageCollection")); LanguageSubsection->SetDisplayName(LOCTEXT("LanguageCollection_Name", "Language")); Screen->AddSetting(LanguageSubsection); //---------------------------------------------------------------------------------- { ULyraSettingValueDiscrete_Language* Setting = NewObject(); 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\nWARNING: 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(); ReplaySubsection->SetDevName(TEXT("ReplayCollection")); ReplaySubsection->SetDisplayName(LOCTEXT("ReplayCollection_Name", "Replays")); Screen->AddSetting(ReplaySubsection); //---------------------------------------------------------------------------------- { UGameSettingValueDiscreteDynamic_Bool* Setting = NewObject(); 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()->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(); 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()->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