I guess this works...

This commit is contained in:
Jorolf 2017-04-21 13:59:04 +02:00
parent 02249dcd67
commit e53c4be356
6 changed files with 42 additions and 44 deletions

View File

@ -10,8 +10,6 @@
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.UserInterface;
using osu.Framework.Input;
using System;
using System.Globalization;
namespace osu.Game.Graphics.UserInterface
{
@ -25,20 +23,16 @@ public class OsuSliderBar<T> : SliderBar<T>, IHasTooltip where T : struct
private readonly Box leftBox;
private readonly Box rightBox;
public Func<T, string> TooltipTextFunc { get; set; }
public string TooltipText
public virtual string TooltipText
{
get
{
if (TooltipTextFunc != null) return TooltipTextFunc(Current);
var bindableDouble = CurrentNumber as BindableNumber<double>;
if (bindableDouble != null)
{
if (bindableDouble.MaxValue == 1 && (bindableDouble.MinValue == 0 || bindableDouble.MinValue == -1))
return bindableDouble.Value.ToString(@"P0");
return bindableDouble.Value.ToString(@"n1", CultureInfo.InvariantCulture);
return bindableDouble.Value.ToString(@"n1");
}
var bindableInt = CurrentNumber as BindableNumber<int>;

View File

@ -6,15 +6,19 @@
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<T> : FillFlowContainer where T : struct
public class OptionSlider<T> : OptionSlider<T, OsuSliderBar<T>> where T: struct
{
private readonly OsuSliderBar<T> slider;
}
public class OptionSlider<T,U> : FillFlowContainer where T : struct where U : SliderBar<T>, new()
{
private readonly SliderBar<T> slider;
private readonly SpriteText text;
public string LabelText
@ -38,18 +42,6 @@ public Bindable<T> Bindable
}
}
public Func<T,string> TooltipText
{
get
{
return slider.TooltipTextFunc;
}
set
{
slider.TooltipTextFunc = value;
}
}
public OptionSlider()
{
RelativeSizeAxes = Axes.X;
@ -62,7 +54,7 @@ public OptionSlider()
{
Alpha = 0,
},
slider = new OsuSliderBar<T>
slider = new U()
{
Margin = new MarginPadding { Top = 5, Bottom = 5 },
RelativeSizeAxes = Axes.X

View File

@ -18,11 +18,10 @@ private void load(OsuConfigManager config)
{
Children = new Drawable[]
{
new OptionSlider<double>
new OptionSlider<double,OffsetSlider>
{
LabelText = "Audio Offset",
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.AudioOffset)
TooltipText = value => value.ToString(@"0ms")
},
new OsuButton
{
@ -31,5 +30,10 @@ private void load(OsuConfigManager config)
}
};
}
private class OffsetSlider : OsuSliderBar<double>
{
public override string TooltipText => Current.Value.ToString(@"0ms");
}
}
}

View File

@ -5,7 +5,7 @@
using osu.Framework.Configuration;
using osu.Framework.Graphics;
using osu.Game.Configuration;
using System.Globalization;
using osu.Game.Graphics.UserInterface;
namespace osu.Game.Overlays.Options.Sections.Gameplay
{
@ -18,20 +18,23 @@ private void load(OsuConfigManager config)
{
Children = new Drawable[]
{
new OptionSlider<double>
new OptionSlider<double,StarSlider>
{
LabelText = "Display beatmaps from",
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.DisplayStarsMinimum),
TooltipText = value => value.ToString(@"0.## stars", CultureInfo.InvariantCulture)
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.DisplayStarsMinimum)
},
new OptionSlider<double>
new OptionSlider<double,StarSlider>
{
LabelText = "up to",
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.DisplayStarsMaximum),
TooltipText = value => value.ToString(@"0.## stars", CultureInfo.InvariantCulture)
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.DisplayStarsMaximum)
},
};
}
private class StarSlider : OsuSliderBar<double>
{
public override string TooltipText => Current.Value.ToString(@"0.## stars");
}
}
}

View File

@ -1,7 +1,6 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// 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;
@ -19,11 +18,10 @@ private void load(OsuConfigManager config)
{
Children = new Drawable[]
{
new OptionSlider<double>
new OptionSlider<double,SensitivitySlider>
{
LabelText = "Sensitivity",
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.MouseSpeed),
TooltipText = value => value.ToString(@"0.##x", CultureInfo.InvariantCulture)
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.MouseSpeed)
},
new OsuCheckbox
{
@ -57,5 +55,10 @@ private void load(OsuConfigManager config)
},
};
}
private class SensitivitySlider : OsuSliderBar<double>
{
public override string TooltipText => Current.Value.ToString(@"0.##x");
}
}
}

View File

@ -8,7 +8,6 @@
using osu.Game.Graphics;
using osu.Game.Graphics.UserInterface;
using OpenTK;
using System.Globalization;
namespace osu.Game.Overlays.Options.Sections
{
@ -60,17 +59,15 @@ private void load(OsuConfigManager config)
LabelText = "Always use skin cursor",
Bindable = config.GetBindable<bool>(OsuConfig.UseSkinCursor)
},
new OptionSlider<double>
new OptionSlider<double,SizeSlider>
{
LabelText = "Menu cursor size",
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.MenuCursorSize),
TooltipText = value => value.ToString(@"0.##x", CultureInfo.InvariantCulture)
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.MenuCursorSize)
},
new OptionSlider<double>
new OptionSlider<double,SizeSlider>
{
LabelText = "Gameplay cursor size",
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.GameplayCursorSize),
TooltipText = value => value.ToString(@"0.##x", CultureInfo.InvariantCulture)
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.GameplayCursorSize)
},
new OsuCheckbox
{
@ -79,5 +76,10 @@ private void load(OsuConfigManager config)
},
};
}
private class SizeSlider : OsuSliderBar<double>
{
public override string TooltipText => Current.Value.ToString(@"0.##x");
}
}
}