diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 9b9a774049..cf141dd320 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -10,6 +10,8 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Framework.Input; +using System; +using System.Globalization; namespace osu.Game.Graphics.UserInterface { @@ -23,16 +25,20 @@ namespace osu.Game.Graphics.UserInterface private readonly Box leftBox; private readonly Box rightBox; + public Func TooltipTextFunc { get; set; } + public string TooltipText { get { + if (TooltipTextFunc != null) return TooltipTextFunc(Current); + var bindableDouble = CurrentNumber as BindableNumber; if (bindableDouble != null) { - if (bindableDouble.MaxValue == 1 && bindableDouble.MinValue == 0) + if (bindableDouble.MaxValue == 1 && (bindableDouble.MinValue == 0 || bindableDouble.MinValue == -1)) return bindableDouble.Value.ToString(@"P0"); - return bindableDouble.Value.ToString(@"n1"); + return bindableDouble.Value.ToString(@"n1", CultureInfo.InvariantCulture); } var bindableInt = CurrentNumber as BindableNumber; diff --git a/osu.Game/Overlays/Options/OptionSlider.cs b/osu.Game/Overlays/Options/OptionSlider.cs index 5c383c74a8..b6989fb7d2 100644 --- a/osu.Game/Overlays/Options/OptionSlider.cs +++ b/osu.Game/Overlays/Options/OptionSlider.cs @@ -6,15 +6,15 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; +using System; namespace osu.Game.Overlays.Options { public class OptionSlider : FillFlowContainer where T : struct { - private readonly SliderBar slider; + private readonly OsuSliderBar slider; private readonly SpriteText text; public string LabelText @@ -38,6 +38,18 @@ namespace osu.Game.Overlays.Options } } + public Func TooltipText + { + get + { + return slider.TooltipTextFunc; + } + set + { + slider.TooltipTextFunc = value; + } + } + public OptionSlider() { RelativeSizeAxes = Axes.X; diff --git a/osu.Game/Overlays/Options/Sections/Audio/OffsetOptions.cs b/osu.Game/Overlays/Options/Sections/Audio/OffsetOptions.cs index c1f5359585..2a4fea28d4 100644 --- a/osu.Game/Overlays/Options/Sections/Audio/OffsetOptions.cs +++ b/osu.Game/Overlays/Options/Sections/Audio/OffsetOptions.cs @@ -22,6 +22,7 @@ namespace osu.Game.Overlays.Options.Sections.Audio { LabelText = "Audio Offset", Bindable = (BindableDouble)config.GetBindable(OsuConfig.AudioOffset) + TooltipText = value => value.ToString(@"0ms") }, new OsuButton { diff --git a/osu.Game/Overlays/Options/Sections/Gameplay/SongSelectOptions.cs b/osu.Game/Overlays/Options/Sections/Gameplay/SongSelectOptions.cs index be38a9847a..3a546f5a0d 100644 --- a/osu.Game/Overlays/Options/Sections/Gameplay/SongSelectOptions.cs +++ b/osu.Game/Overlays/Options/Sections/Gameplay/SongSelectOptions.cs @@ -5,6 +5,7 @@ using osu.Framework.Allocation; using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Game.Configuration; +using System.Globalization; namespace osu.Game.Overlays.Options.Sections.Gameplay { @@ -20,12 +21,14 @@ namespace osu.Game.Overlays.Options.Sections.Gameplay new OptionSlider { LabelText = "Display beatmaps from", - Bindable = (BindableDouble)config.GetBindable(OsuConfig.DisplayStarsMinimum) + Bindable = (BindableDouble)config.GetBindable(OsuConfig.DisplayStarsMinimum), + TooltipText = value => value.ToString(@"0.## stars", CultureInfo.InvariantCulture) }, new OptionSlider { LabelText = "up to", - Bindable = (BindableDouble)config.GetBindable(OsuConfig.DisplayStarsMaximum) + Bindable = (BindableDouble)config.GetBindable(OsuConfig.DisplayStarsMaximum), + TooltipText = value => value.ToString(@"0.## stars", CultureInfo.InvariantCulture) }, }; } diff --git a/osu.Game/Overlays/Options/Sections/Input/MouseOptions.cs b/osu.Game/Overlays/Options/Sections/Input/MouseOptions.cs index 92be00bdb0..63685aff0d 100644 --- a/osu.Game/Overlays/Options/Sections/Input/MouseOptions.cs +++ b/osu.Game/Overlays/Options/Sections/Input/MouseOptions.cs @@ -1,6 +1,7 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System.Globalization; using osu.Framework.Allocation; using osu.Framework.Configuration; using osu.Framework.Graphics; @@ -22,6 +23,7 @@ namespace osu.Game.Overlays.Options.Sections.Input { LabelText = "Sensitivity", Bindable = (BindableDouble)config.GetBindable(OsuConfig.MouseSpeed), + TooltipText = value => value.ToString(@"0.##x", CultureInfo.InvariantCulture) }, new OsuCheckbox { diff --git a/osu.Game/Overlays/Options/Sections/SkinSection.cs b/osu.Game/Overlays/Options/Sections/SkinSection.cs index 78f4f1e380..aa681b94b3 100644 --- a/osu.Game/Overlays/Options/Sections/SkinSection.cs +++ b/osu.Game/Overlays/Options/Sections/SkinSection.cs @@ -8,6 +8,7 @@ using osu.Game.Configuration; using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using OpenTK; +using System.Globalization; namespace osu.Game.Overlays.Options.Sections { @@ -62,12 +63,14 @@ namespace osu.Game.Overlays.Options.Sections new OptionSlider { LabelText = "Menu cursor size", - Bindable = (BindableDouble)config.GetBindable(OsuConfig.MenuCursorSize) + Bindable = (BindableDouble)config.GetBindable(OsuConfig.MenuCursorSize), + TooltipText = value => value.ToString(@"0.##x", CultureInfo.InvariantCulture) }, new OptionSlider { LabelText = "Gameplay cursor size", - Bindable = (BindableDouble)config.GetBindable(OsuConfig.GameplayCursorSize) + Bindable = (BindableDouble)config.GetBindable(OsuConfig.GameplayCursorSize), + TooltipText = value => value.ToString(@"0.##x", CultureInfo.InvariantCulture) }, new OsuCheckbox {