1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 17:35:10 +08:00

Add setting to enable/disable hit error visibility

This commit is contained in:
Andrei Zavatski 2019-08-18 15:01:04 +03:00
parent ee5568e596
commit a59a14c9e6
4 changed files with 37 additions and 2 deletions

View File

@ -79,6 +79,7 @@ namespace osu.Game.Configuration
Set(OsuSetting.ShowInterface, true); Set(OsuSetting.ShowInterface, true);
Set(OsuSetting.ShowHealthDisplayWhenCantFail, true); Set(OsuSetting.ShowHealthDisplayWhenCantFail, true);
Set(OsuSetting.KeyOverlay, false); Set(OsuSetting.KeyOverlay, false);
Set(OsuSetting.ScoreMeter, ScoreMeterType.HitError);
Set(OsuSetting.FloatingComments, false); Set(OsuSetting.FloatingComments, false);
@ -132,6 +133,7 @@ namespace osu.Game.Configuration
BlurLevel, BlurLevel,
ShowStoryboard, ShowStoryboard,
KeyOverlay, KeyOverlay,
ScoreMeter,
FloatingComments, FloatingComments,
ShowInterface, ShowInterface,
ShowHealthDisplayWhenCantFail, ShowHealthDisplayWhenCantFail,

View File

@ -1,12 +1,16 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System.ComponentModel;
namespace osu.Game.Configuration namespace osu.Game.Configuration
{ {
public enum ScoreMeterType public enum ScoreMeterType
{ {
[Description("None")]
None, None,
Colour,
Error [Description("Hit Error")]
HitError
} }
} }

View File

@ -44,6 +44,11 @@ namespace osu.Game.Overlays.Settings.Sections.Gameplay
LabelText = "Always show key overlay", LabelText = "Always show key overlay",
Bindable = config.GetBindable<bool>(OsuSetting.KeyOverlay) Bindable = config.GetBindable<bool>(OsuSetting.KeyOverlay)
}, },
new SettingsEnumDropdown<ScoreMeterType>
{
LabelText = "Score meter type",
Bindable = config.GetBindable<ScoreMeterType>(OsuSetting.ScoreMeter)
},
new SettingsEnumDropdown<ScoringMode> new SettingsEnumDropdown<ScoringMode>
{ {
LabelText = "Score display mode", LabelText = "Score display mode",

View File

@ -17,6 +17,7 @@ using osu.Framework.Graphics.Colour;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Extensions.Color4Extensions;
using System.Linq; using System.Linq;
using osu.Game.Configuration;
namespace osu.Game.Screens.Play.HUD namespace osu.Game.Screens.Play.HUD
{ {
@ -40,6 +41,8 @@ namespace osu.Game.Screens.Play.HUD
private readonly FillFlowContainer bar; private readonly FillFlowContainer bar;
private readonly Queue<double> judgementOffsets = new Queue<double>(); private readonly Queue<double> judgementOffsets = new Queue<double>();
private readonly Bindable<ScoreMeterType> type = new Bindable<ScoreMeterType>();
public HitErrorDisplay(bool mirrored = false) public HitErrorDisplay(bool mirrored = false)
{ {
this.mirrored = mirrored; this.mirrored = mirrored;
@ -65,6 +68,12 @@ namespace osu.Game.Screens.Play.HUD
}; };
} }
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
{
config.BindWith(OsuSetting.ScoreMeter, type);
}
protected override void LoadComplete() protected override void LoadComplete()
{ {
base.LoadComplete(); base.LoadComplete();
@ -103,6 +112,21 @@ namespace osu.Game.Screens.Play.HUD
Height = (float)((HitWindows.Meh - HitWindows.Good) / (HitWindows.Meh * 2)) Height = (float)((HitWindows.Meh - HitWindows.Good) / (HitWindows.Meh * 2))
} }
}); });
type.BindValueChanged(onTypeChanged, true);
}
private void onTypeChanged(ValueChangedEvent<ScoreMeterType> type)
{
switch (type.NewValue)
{
case ScoreMeterType.None:
this.FadeOut(200, Easing.OutQuint);
break;
case ScoreMeterType.HitError:
this.FadeIn(200, Easing.OutQuint);
break;
}
} }
public void OnNewJudgement(JudgementResult newJudgement) public void OnNewJudgement(JudgementResult newJudgement)