Add setting to adjust hold-to-confirm activation time

This commit is contained in:
Dean Herbert 2019-09-19 14:04:51 +09:00
parent 3710c7bdc4
commit 177a789d79
4 changed files with 27 additions and 13 deletions

View File

@ -112,6 +112,8 @@ protected override void InitialiseDefaults()
Set(OsuSetting.UIScale, 1f, 0.8f, 1.6f, 0.01f);
Set(OsuSetting.UIHoldActivationDelay, 200, 0, 500);
Set(OsuSetting.IntroSequence, IntroSequence.Triangles);
}
@ -180,6 +182,7 @@ public enum OsuSetting
ScalingSizeX,
ScalingSizeY,
UIScale,
IntroSequence
IntroSequence,
UIHoldActivationDelay
}
}

View File

@ -2,9 +2,11 @@
// 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.Framework.Graphics.Containers;
using osu.Game.Configuration;
namespace osu.Game.Graphics.Containers
{
@ -12,11 +14,8 @@ public abstract class HoldToConfirmContainer : Container
{
public Action Action;
private const int default_activation_delay = 200;
private const int fadeout_delay = 200;
private readonly double activationDelay;
private bool fired;
private bool confirming;
@ -27,13 +26,12 @@ public abstract class HoldToConfirmContainer : Container
public Bindable<double> Progress = new BindableDouble();
/// <summary>
/// Create a new instance.
/// </summary>
/// <param name="activationDelay">The time requried before an action is confirmed.</param>
protected HoldToConfirmContainer(double activationDelay = default_activation_delay)
private Bindable<int> holdActivationDelay;
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
{
this.activationDelay = activationDelay;
holdActivationDelay = config.GetBindable<int>(OsuSetting.UIHoldActivationDelay);
}
protected void BeginConfirm()
@ -42,7 +40,7 @@ protected void BeginConfirm()
confirming = true;
this.TransformBindableTo(Progress, 1, activationDelay * (1 - Progress.Value), Easing.Out).OnComplete(_ => Confirm());
this.TransformBindableTo(Progress, 1, holdActivationDelay.Value * (1 - Progress.Value), Easing.Out).OnComplete(_ => Confirm());
}
protected virtual void Confirm()

View File

@ -51,7 +51,7 @@ private void load()
protected override void Dispose(bool isDisposing)
{
audio.Tracks.RemoveAdjustment(AdjustableProperty.Volume, audioVolume);
audio?.Tracks.RemoveAdjustment(AdjustableProperty.Volume, audioVolume);
base.Dispose(isDisposing);
}
}

View File

@ -2,7 +2,9 @@
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Game.Configuration;
using osu.Game.Graphics.UserInterface;
namespace osu.Game.Overlays.Settings.Sections.Graphics
{
@ -13,7 +15,7 @@ public class UserInterfaceSettings : SettingsSubsection
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
{
Children = new[]
Children = new Drawable[]
{
new SettingsCheckbox
{
@ -25,7 +27,18 @@ private void load(OsuConfigManager config)
LabelText = "Parallax",
Bindable = config.GetBindable<bool>(OsuSetting.MenuParallax)
},
new SettingsSlider<int, TimeSlider>
{
LabelText = "Hold-to-confirm activation time",
Bindable = config.GetBindable<int>(OsuSetting.UIHoldActivationDelay),
KeyboardStep = 50
},
};
}
private class TimeSlider : OsuSliderBar<int>
{
public override string TooltipText => Current.Value.ToString("N0") + "ms";
}
}
}