1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-31 02:30:06 +08:00

Add tooltip text for offset adjustment slider

This commit is contained in:
Dean Herbert
2022-03-03 17:07:46 +09:00
Unverified
parent 657f2ebb9d
commit cc4f89eef4
3 changed files with 45 additions and 7 deletions
@@ -29,6 +29,16 @@ namespace osu.Game.Localisation
/// </summary>
public static LocalisableString CalibrateUsingLastPlay => new TranslatableString(getKey(@"calibrate_using_last_play"), @"Calibrate using last play");
/// <summary>
/// "(hit objects appear later)"
/// </summary>
public static LocalisableString HitObjectsAppearLater => new TranslatableString(getKey(@"hit_objects_appear_later"), @"(hit objects appear later)");
/// <summary>
/// "(hit objects appear earlier)"
/// </summary>
public static LocalisableString HitObjectsAppearEarlier => new TranslatableString(getKey(@"hit_objects_appear_earlier"), @"(hit objects appear earlier)");
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
}
@@ -3,12 +3,14 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Localisation;
using osu.Framework.Utils;
using osu.Game.Beatmaps;
using osu.Game.Database;
@@ -71,7 +73,7 @@ namespace osu.Game.Screens.Play.PlayerSettings
Spacing = new Vector2(10),
Children = new Drawable[]
{
new PlayerSliderBar<double>
new OffsetSliderBar
{
KeyboardStep = 5,
LabelText = BeatmapOffsetControlStrings.BeatmapOffset,
@@ -88,6 +90,30 @@ namespace osu.Game.Screens.Play.PlayerSettings
};
}
public class OffsetSliderBar : PlayerSliderBar<double>
{
protected override Drawable CreateControl() => new CustomSliderBar();
protected class CustomSliderBar : SliderBar
{
protected override LocalisableString GetTooltipText(double value)
{
return value == 0
? new TranslatableString("_", @"{0} ms", base.GetTooltipText(value))
: new TranslatableString("_", @"{0} ms {1}", base.GetTooltipText(value), getEarlyLateText(value));
}
private LocalisableString getEarlyLateText(double value)
{
Debug.Assert(value != 0);
return value > 0
? BeatmapOffsetControlStrings.HitObjectsAppearLater
: BeatmapOffsetControlStrings.HitObjectsAppearEarlier;
}
}
}
protected override void LoadComplete()
{
base.LoadComplete();
@@ -15,13 +15,15 @@ namespace osu.Game.Screens.Play.PlayerSettings
{
public OsuSliderBar<T> Bar => (OsuSliderBar<T>)Control;
protected override Drawable CreateControl() => new SliderBar
{
RelativeSizeAxes = Axes.X
};
protected override Drawable CreateControl() => new SliderBar();
private class SliderBar : OsuSliderBar<T>
protected class SliderBar : OsuSliderBar<T>
{
public SliderBar()
{
RelativeSizeAxes = Axes.X;
}
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{