2019-01-24 16:43:03 +08:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2018-04-13 17:19:50 +08:00
using osu.Framework.Allocation ;
using osu.Framework.Configuration ;
using osu.Framework.Graphics ;
2021-07-15 11:50:34 +08:00
using osu.Framework.Localisation ;
2020-02-28 18:11:18 +08:00
using osu.Framework.Platform ;
2018-04-13 17:19:50 +08:00
using osu.Game.Configuration ;
namespace osu.Game.Overlays.Settings.Sections.Graphics
{
public class RendererSettings : SettingsSubsection
{
2021-07-15 11:50:34 +08:00
protected override LocalisableString Header = > "Renderer" ;
2018-04-13 17:19:50 +08:00
2021-05-04 15:59:48 +08:00
private SettingsEnumDropdown < FrameSync > frameLimiterDropdown ;
2018-04-13 17:19:50 +08:00
[BackgroundDependencyLoader]
private void load ( FrameworkConfigManager config , OsuConfigManager osuConfig )
{
// NOTE: Compatability mode omitted
Children = new Drawable [ ]
{
// TODO: this needs to be a custom dropdown at some point
2021-05-04 15:59:48 +08:00
frameLimiterDropdown = new SettingsEnumDropdown < FrameSync >
2018-04-13 17:19:50 +08:00
{
LabelText = "Frame limiter" ,
2020-10-06 16:18:41 +08:00
Current = config . GetBindable < FrameSync > ( FrameworkSetting . FrameSync )
2018-04-13 17:19:50 +08:00
} ,
2020-02-28 18:11:18 +08:00
new SettingsEnumDropdown < ExecutionMode >
{
LabelText = "Threading mode" ,
2020-10-06 16:18:41 +08:00
Current = config . GetBindable < ExecutionMode > ( FrameworkSetting . ExecutionMode )
2020-02-28 18:11:18 +08:00
} ,
2018-04-13 17:19:50 +08:00
new SettingsCheckbox
{
LabelText = "Show FPS" ,
2020-10-06 16:18:41 +08:00
Current = osuConfig . GetBindable < bool > ( OsuSetting . ShowFpsDisplay )
2018-04-13 17:19:50 +08:00
} ,
} ;
}
2021-05-04 15:59:48 +08:00
protected override void LoadComplete ( )
{
base . LoadComplete ( ) ;
frameLimiterDropdown . Current . BindValueChanged ( limit = >
{
2021-05-05 15:15:06 +08:00
const string unlimited_frames_note = "Using unlimited frame limiter can lead to stutters, bad performance and overheating. It will not improve perceived latency. \"2x refresh rate\" is recommended." ;
2021-05-04 15:59:48 +08:00
2021-05-05 15:16:02 +08:00
frameLimiterDropdown . WarningText = limit . NewValue = = FrameSync . Unlimited ? unlimited_frames_note : string . Empty ;
2021-05-04 15:59:48 +08:00
} , true ) ;
}
2018-04-13 17:19:50 +08:00
}
}