1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-16 17:03:18 +08:00

Add line style for centre marker

This commit is contained in:
Dean Herbert 2022-03-18 17:23:27 +09:00
parent cdeab1b14e
commit 919583137e

View File

@ -34,7 +34,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters
public Bindable<bool> ShowMovingAverage { get; } = new BindableBool(true); public Bindable<bool> ShowMovingAverage { get; } = new BindableBool(true);
[SettingSource("Centre marker style", "How to signify the centre of the display")] [SettingSource("Centre marker style", "How to signify the centre of the display")]
public Bindable<CentreMarker> CentreMarkerStyle { get; } = new Bindable<CentreMarker>(CentreMarker.Circle); public Bindable<CentreMarkerStyles> CentreMarkerStyle { get; } = new Bindable<CentreMarkerStyles>(CentreMarkerStyles.Circle);
private SpriteIcon arrow; private SpriteIcon arrow;
private SpriteIcon iconEarly; private SpriteIcon iconEarly;
@ -180,7 +180,7 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters
} }
} }
private void recreateCentreMarker(CentreMarker style) private void recreateCentreMarker(CentreMarkerStyles style)
{ {
if (centreMarkerDrawables != null) if (centreMarkerDrawables != null)
{ {
@ -197,10 +197,10 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters
switch (style) switch (style)
{ {
case CentreMarker.None: case CentreMarkerStyles.None:
break; break;
case CentreMarker.Circle: case CentreMarkerStyles.Circle:
centreMarkerDrawables = new Drawable[] centreMarkerDrawables = new Drawable[]
{ {
new Circle new Circle
@ -219,11 +219,39 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
Depth = float.MinValue, Depth = float.MinValue,
Size = new Vector2(centre_marker_size), Size = new Vector2(centre_marker_size / 2f),
Scale = new Vector2(0.5f),
}, },
}; };
break; break;
case CentreMarkerStyles.Line:
const float border_size = 1.5f;
centreMarkerDrawables = new Drawable[]
{
new Box
{
Name = "middle marker behind",
Colour = GetColourForHitResult(hitWindows.Last().result),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Depth = float.MaxValue,
Size = new Vector2(judgement_line_width, centre_marker_size / 3f),
},
new Box
{
Name = "middle marker in front",
Colour = GetColourForHitResult(hitWindows.Last().result).Darken(0.3f),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Depth = float.MinValue,
Size = new Vector2(judgement_line_width - border_size, centre_marker_size / 3f - border_size),
},
};
break;
default:
throw new ArgumentOutOfRangeException(nameof(style), style, null);
} }
if (centreMarkerDrawables != null) if (centreMarkerDrawables != null)
@ -232,9 +260,8 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters
{ {
colourBars.Add(d); colourBars.Add(d);
Vector2 originalScale = d.Scale;
d.FadeInFromZero(500, Easing.OutQuint) d.FadeInFromZero(500, Easing.OutQuint)
.ScaleTo(0).ScaleTo(originalScale, 1000, Easing.OutElasticHalf); .ScaleTo(0).ScaleTo(1, 1000, Easing.OutElasticHalf);
} }
} }
} }
@ -386,10 +413,11 @@ namespace osu.Game.Screens.Play.HUD.HitErrorMeters
public override void Clear() => judgementsContainer.Clear(); public override void Clear() => judgementsContainer.Clear();
public enum CentreMarker public enum CentreMarkerStyles
{ {
None, None,
Circle Circle,
Line
} }
} }
} }