2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
# include "LyraSettingValueDiscrete_OverallQuality.h"
2022-09-13 07:18:28 +00:00
# include "CoreTypes.h"
2022-05-23 18:41:30 +00:00
# include "Engine/Engine.h"
2022-09-13 07:18:28 +00:00
# include "GameFramework/GameUserSettings.h"
# include "GameSettingFilterState.h"
# include "Internationalization/Internationalization.h"
2022-05-23 18:41:30 +00:00
# include "Settings/LyraSettingsLocal.h"
2022-09-13 07:18:28 +00:00
# include "Templates/Casts.h"
2022-05-23 18:41:30 +00:00
# define LOCTEXT_NAMESPACE "LyraSettings"
ULyraSettingValueDiscrete_OverallQuality : : ULyraSettingValueDiscrete_OverallQuality ( )
{
}
void ULyraSettingValueDiscrete_OverallQuality : : OnInitialized ( )
{
Super : : OnInitialized ( ) ;
ULyraSettingsLocal * UserSettings = ULyraSettingsLocal : : Get ( ) ;
const int32 MaxQualityLevel = UserSettings - > GetMaxSupportedOverallQualityLevel ( ) ;
auto AddOptionIfPossible = [ & ] ( int Index , FText & & Value ) { if ( ( MaxQualityLevel < 0 ) | | ( Index < = MaxQualityLevel ) ) { Options . Add ( Value ) ; } } ;
AddOptionIfPossible ( 0 , LOCTEXT ( " VideoQualityOverall_Low " , " Low " ) ) ;
AddOptionIfPossible ( 1 , LOCTEXT ( " VideoQualityOverall_Medium " , " Medium " ) ) ;
AddOptionIfPossible ( 2 , LOCTEXT ( " VideoQualityOverall_High " , " High " ) ) ;
AddOptionIfPossible ( 3 , LOCTEXT ( " VideoQualityOverall_Epic " , " Epic " ) ) ;
OptionsWithCustom = Options ;
OptionsWithCustom . Add ( LOCTEXT ( " VideoQualityOverall_Custom " , " Custom " ) ) ;
const int32 LowestQualityWithFrameRateLimit = UserSettings - > GetLowestQualityWithFrameRateLimit ( ) ;
if ( Options . IsValidIndex ( LowestQualityWithFrameRateLimit ) )
{
SetWarningRichText ( FText : : Format ( LOCTEXT ( " OverallQuality_Mobile_ImpactsFramerate " , " <strong>Note: Changing the Quality setting to {0} or higher might limit your framerate.</> " ) , Options [ LowestQualityWithFrameRateLimit ] ) ) ;
}
}
void ULyraSettingValueDiscrete_OverallQuality : : StoreInitial ( )
{
}
void ULyraSettingValueDiscrete_OverallQuality : : ResetToDefault ( )
{
}
void ULyraSettingValueDiscrete_OverallQuality : : RestoreToInitial ( )
{
}
void ULyraSettingValueDiscrete_OverallQuality : : SetDiscreteOptionByIndex ( int32 Index )
{
UGameUserSettings * UserSettings = CastChecked < UGameUserSettings > ( GEngine - > GetGameUserSettings ( ) ) ;
if ( Index = = GetCustomOptionIndex ( ) )
{
// Leave everything as is we're in a custom setup.
}
else
{
// Low / Medium / High / Epic
UserSettings - > SetOverallScalabilityLevel ( Index ) ;
}
NotifySettingChanged ( EGameSettingChangeReason : : Change ) ;
}
int32 ULyraSettingValueDiscrete_OverallQuality : : GetDiscreteOptionIndex ( ) const
{
const int32 OverallQualityLevel = GetOverallQualityLevel ( ) ;
if ( OverallQualityLevel = = INDEX_NONE )
{
return GetCustomOptionIndex ( ) ;
}
return OverallQualityLevel ;
}
TArray < FText > ULyraSettingValueDiscrete_OverallQuality : : GetDiscreteOptions ( ) const
{
const int32 OverallQualityLevel = GetOverallQualityLevel ( ) ;
if ( OverallQualityLevel = = INDEX_NONE )
{
return OptionsWithCustom ;
}
else
{
return Options ;
}
}
int32 ULyraSettingValueDiscrete_OverallQuality : : GetCustomOptionIndex ( ) const
{
return OptionsWithCustom . Num ( ) - 1 ;
}
int32 ULyraSettingValueDiscrete_OverallQuality : : GetOverallQualityLevel ( ) const
{
const UGameUserSettings * UserSettings = CastChecked < const UGameUserSettings > ( GEngine - > GetGameUserSettings ( ) ) ;
return UserSettings - > GetOverallScalabilityLevel ( ) ;
}
# undef LOCTEXT_NAMESPACE