// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Configuration; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays.Settings.Sections.Gameplay { public class SongSelectSettings : SettingsSubsection { private Bindable minStars; private Bindable maxStars; protected override string Header => "Song Select"; [BackgroundDependencyLoader] private void load(OsuConfigManager config) { minStars = config.GetBindable(OsuSetting.DisplayStarsMinimum); maxStars = config.GetBindable(OsuSetting.DisplayStarsMaximum); minStars.ValueChanged += min => maxStars.Value = Math.Max(min.NewValue, maxStars.Value); maxStars.ValueChanged += max => minStars.Value = Math.Min(max.NewValue, minStars.Value); Children = new Drawable[] { new SettingsCheckbox { LabelText = "Right mouse drag to absolute scroll", Bindable = config.GetBindable(OsuSetting.SongSelectRightMouseScroll), }, new SettingsCheckbox { LabelText = "Show converted beatmaps", Bindable = config.GetBindable(OsuSetting.ShowConvertedBeatmaps), }, new SettingsSlider { LabelText = "Display beatmaps from", Bindable = config.GetBindable(OsuSetting.DisplayStarsMinimum), KeyboardStep = 0.1f, Keywords = new[] { "minimum", "maximum", "star", "difficulty" } }, new SettingsSlider { LabelText = "up to", Bindable = config.GetBindable(OsuSetting.DisplayStarsMaximum), KeyboardStep = 0.1f, Keywords = new[] { "minimum", "maximum", "star", "difficulty" } }, new SettingsEnumDropdown { LabelText = "Random selection algorithm", Bindable = config.GetBindable(OsuSetting.RandomSelectAlgorithm), } }; } private class MaximumStarsSlider : StarsSlider { public override string TooltipText => Current.IsDefault ? "no limit" : base.TooltipText; } private class StarsSlider : OsuSliderBar { public override string TooltipText => Current.Value.ToString(@"0.## stars"); } } }