1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 16:52:54 +08:00

Merge pull request #25469 from Joehuu/argon-hide-counter-labels

Add ability to toggle labels on argon counter components
This commit is contained in:
Dean Herbert 2023-11-16 17:01:03 +09:00 committed by GitHub
commit 0a8ede6274
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 66 additions and 18 deletions

View File

@ -12,43 +12,53 @@ namespace osu.Game.Localisation.SkinComponents
/// <summary> /// <summary>
/// "Sprite name" /// "Sprite name"
/// </summary> /// </summary>
public static LocalisableString SpriteName => new TranslatableString(getKey(@"sprite_name"), "Sprite name"); public static LocalisableString SpriteName => new TranslatableString(getKey(@"sprite_name"), @"Sprite name");
/// <summary> /// <summary>
/// "The filename of the sprite" /// "The filename of the sprite"
/// </summary> /// </summary>
public static LocalisableString SpriteNameDescription => new TranslatableString(getKey(@"sprite_name_description"), "The filename of the sprite"); public static LocalisableString SpriteNameDescription => new TranslatableString(getKey(@"sprite_name_description"), @"The filename of the sprite");
/// <summary> /// <summary>
/// "Font" /// "Font"
/// </summary> /// </summary>
public static LocalisableString Font => new TranslatableString(getKey(@"font"), "Font"); public static LocalisableString Font => new TranslatableString(getKey(@"font"), @"Font");
/// <summary> /// <summary>
/// "The font to use." /// "The font to use."
/// </summary> /// </summary>
public static LocalisableString FontDescription => new TranslatableString(getKey(@"font_description"), "The font to use."); public static LocalisableString FontDescription => new TranslatableString(getKey(@"font_description"), @"The font to use.");
/// <summary> /// <summary>
/// "Text" /// "Text"
/// </summary> /// </summary>
public static LocalisableString TextElementText => new TranslatableString(getKey(@"text_element_text"), "Text"); public static LocalisableString TextElementText => new TranslatableString(getKey(@"text_element_text"), @"Text");
/// <summary> /// <summary>
/// "The text to be displayed." /// "The text to be displayed."
/// </summary> /// </summary>
public static LocalisableString TextElementTextDescription => new TranslatableString(getKey(@"text_element_text_description"), "The text to be displayed."); public static LocalisableString TextElementTextDescription => new TranslatableString(getKey(@"text_element_text_description"), @"The text to be displayed.");
/// <summary> /// <summary>
/// "Corner radius" /// "Corner radius"
/// </summary> /// </summary>
public static LocalisableString CornerRadius => new TranslatableString(getKey(@"corner_radius"), "Corner radius"); public static LocalisableString CornerRadius => new TranslatableString(getKey(@"corner_radius"), @"Corner radius");
/// <summary> /// <summary>
/// "How rounded the corners should be." /// "How rounded the corners should be."
/// </summary> /// </summary>
public static LocalisableString CornerRadiusDescription => new TranslatableString(getKey(@"corner_radius_description"), "How rounded the corners should be."); public static LocalisableString CornerRadiusDescription => new TranslatableString(getKey(@"corner_radius_description"), @"How rounded the corners should be.");
private static string getKey(string key) => $"{prefix}:{key}"; /// <summary>
/// "Show label"
/// </summary>
public static LocalisableString ShowLabel => new TranslatableString(getKey(@"show_label"), @"Show label");
/// <summary>
/// "Whether the component&#39;s label should be shown."
/// </summary>
public static LocalisableString ShowLabelDescription => new TranslatableString(getKey(@"show_label_description"), @"Whether the component's label should be shown.");
private static string getKey(string key) => $@"{prefix}:{key}";
} }
} }

View File

@ -2,11 +2,14 @@
// 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 osu.Framework.Bindables; using osu.Framework.Bindables;
using osu.Framework.Extensions.LocalisationExtensions;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
using osu.Framework.Localisation; using osu.Framework.Localisation;
using osu.Game.Configuration; using osu.Game.Configuration;
using osu.Game.Localisation.SkinComponents;
using osu.Game.Resources.Localisation.Web;
using osu.Game.Skinning; using osu.Game.Skinning;
using osuTK; using osuTK;
@ -25,20 +28,27 @@ namespace osu.Game.Screens.Play.HUD
MaxValue = 1, MaxValue = 1,
}; };
[SettingSource(typeof(SkinnableComponentStrings), nameof(SkinnableComponentStrings.ShowLabel), nameof(SkinnableComponentStrings.ShowLabelDescription))]
public Bindable<bool> ShowLabel { get; } = new BindableBool(true);
public bool UsesFixedAnchor { get; set; } public bool UsesFixedAnchor { get; set; }
protected override IHasText CreateText() => new ArgonAccuracyTextComponent protected override IHasText CreateText() => new ArgonAccuracyTextComponent
{ {
WireframeOpacity = { BindTarget = WireframeOpacity }, WireframeOpacity = { BindTarget = WireframeOpacity },
ShowLabel = { BindTarget = ShowLabel },
}; };
private partial class ArgonAccuracyTextComponent : CompositeDrawable, IHasText private partial class ArgonAccuracyTextComponent : CompositeDrawable, IHasText
{ {
private readonly ArgonCounterTextComponent wholePart; private readonly ArgonCounterTextComponent wholePart;
private readonly ArgonCounterTextComponent fractionPart; private readonly ArgonCounterTextComponent fractionPart;
private readonly ArgonCounterTextComponent percentText;
public IBindable<float> WireframeOpacity { get; } = new BindableFloat(); public IBindable<float> WireframeOpacity { get; } = new BindableFloat();
public Bindable<bool> ShowLabel { get; } = new BindableBool();
public LocalisableString Text public LocalisableString Text
{ {
get => wholePart.Text; get => wholePart.Text;
@ -64,27 +74,37 @@ namespace osu.Game.Screens.Play.HUD
new Container new Container
{ {
AutoSizeAxes = Axes.Both, AutoSizeAxes = Axes.Both,
Child = wholePart = new ArgonCounterTextComponent(Anchor.TopRight, "ACCURACY") Child = wholePart = new ArgonCounterTextComponent(Anchor.TopRight, BeatmapsetsStrings.ShowScoreboardHeadersAccuracy.ToUpper())
{ {
RequiredDisplayDigits = { Value = 3 }, RequiredDisplayDigits = { Value = 3 },
WireframeOpacity = { BindTarget = WireframeOpacity } WireframeOpacity = { BindTarget = WireframeOpacity },
ShowLabel = { BindTarget = ShowLabel },
} }
}, },
fractionPart = new ArgonCounterTextComponent(Anchor.TopLeft) fractionPart = new ArgonCounterTextComponent(Anchor.TopLeft)
{ {
Margin = new MarginPadding { Top = 12f * 2f + 4f }, // +4 to account for the extra spaces above the digits.
WireframeOpacity = { BindTarget = WireframeOpacity }, WireframeOpacity = { BindTarget = WireframeOpacity },
Scale = new Vector2(0.5f), Scale = new Vector2(0.5f),
}, },
new ArgonCounterTextComponent(Anchor.TopLeft) percentText = new ArgonCounterTextComponent(Anchor.TopLeft)
{ {
Text = @"%", Text = @"%",
Margin = new MarginPadding { Top = 12f },
WireframeOpacity = { BindTarget = WireframeOpacity } WireframeOpacity = { BindTarget = WireframeOpacity }
}, },
} }
}; };
} }
protected override void LoadComplete()
{
base.LoadComplete();
ShowLabel.BindValueChanged(s =>
{
fractionPart.Margin = new MarginPadding { Top = s.NewValue ? 12f * 2f + 4f : 4f }; // +4 to account for the extra spaces above the digits.
percentText.Margin = new MarginPadding { Top = s.NewValue ? 12f : 0 };
}, true);
}
} }
} }
} }

View File

@ -4,10 +4,13 @@
using System; using System;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Bindables; using osu.Framework.Bindables;
using osu.Framework.Extensions.LocalisationExtensions;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
using osu.Framework.Localisation; using osu.Framework.Localisation;
using osu.Game.Configuration; using osu.Game.Configuration;
using osu.Game.Localisation.SkinComponents;
using osu.Game.Resources.Localisation.Web;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
@ -29,6 +32,9 @@ namespace osu.Game.Screens.Play.HUD
MaxValue = 1, MaxValue = 1,
}; };
[SettingSource(typeof(SkinnableComponentStrings), nameof(SkinnableComponentStrings.ShowLabel), nameof(SkinnableComponentStrings.ShowLabelDescription))]
public Bindable<bool> ShowLabel { get; } = new BindableBool(true);
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(ScoreProcessor scoreProcessor) private void load(ScoreProcessor scoreProcessor)
{ {
@ -53,9 +59,10 @@ namespace osu.Game.Screens.Play.HUD
protected override LocalisableString FormatCount(int count) => $@"{count}x"; protected override LocalisableString FormatCount(int count) => $@"{count}x";
protected override IHasText CreateText() => text = new ArgonCounterTextComponent(Anchor.TopLeft, "COMBO") protected override IHasText CreateText() => text = new ArgonCounterTextComponent(Anchor.TopLeft, MatchesStrings.MatchScoreStatsCombo.ToUpper())
{ {
WireframeOpacity = { BindTarget = WireframeOpacity }, WireframeOpacity = { BindTarget = WireframeOpacity },
ShowLabel = { BindTarget = ShowLabel },
}; };
} }
} }

View File

@ -26,6 +26,7 @@ namespace osu.Game.Screens.Play.HUD
public IBindable<float> WireframeOpacity { get; } = new BindableFloat(); public IBindable<float> WireframeOpacity { get; } = new BindableFloat();
public Bindable<int> RequiredDisplayDigits { get; } = new BindableInt(); public Bindable<int> RequiredDisplayDigits { get; } = new BindableInt();
public Bindable<bool> ShowLabel { get; } = new BindableBool();
public Container NumberContainer { get; private set; } public Container NumberContainer { get; private set; }
@ -56,7 +57,7 @@ namespace osu.Game.Screens.Play.HUD
{ {
labelText = new OsuSpriteText labelText = new OsuSpriteText
{ {
Alpha = label != null ? 1 : 0, Alpha = 0,
Text = label.GetValueOrDefault(), Text = label.GetValueOrDefault(),
Font = OsuFont.Torus.With(size: 12, weight: FontWeight.Bold), Font = OsuFont.Torus.With(size: 12, weight: FontWeight.Bold),
Margin = new MarginPadding { Left = 2.5f }, Margin = new MarginPadding { Left = 2.5f },
@ -114,6 +115,7 @@ namespace osu.Game.Screens.Play.HUD
{ {
base.LoadComplete(); base.LoadComplete();
WireframeOpacity.BindValueChanged(v => wireframesPart.Alpha = v.NewValue, true); WireframeOpacity.BindValueChanged(v => wireframesPart.Alpha = v.NewValue, true);
ShowLabel.BindValueChanged(s => labelText.Alpha = s.NewValue ? 1 : 0, true);
} }
private partial class ArgonCounterSpriteText : OsuSpriteText private partial class ArgonCounterSpriteText : OsuSpriteText

View File

@ -7,6 +7,8 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
using osu.Framework.Localisation; using osu.Framework.Localisation;
using osu.Game.Configuration; using osu.Game.Configuration;
using osu.Game.Localisation.SkinComponents;
using osu.Game.Resources.Localisation.Web;
using osu.Game.Skinning; using osu.Game.Skinning;
namespace osu.Game.Screens.Play.HUD namespace osu.Game.Screens.Play.HUD
@ -24,14 +26,18 @@ namespace osu.Game.Screens.Play.HUD
MaxValue = 1, MaxValue = 1,
}; };
[SettingSource(typeof(SkinnableComponentStrings), nameof(SkinnableComponentStrings.ShowLabel), nameof(SkinnableComponentStrings.ShowLabelDescription))]
public Bindable<bool> ShowLabel { get; } = new BindableBool(true);
public bool UsesFixedAnchor { get; set; } public bool UsesFixedAnchor { get; set; }
protected override LocalisableString FormatCount(long count) => count.ToLocalisableString(); protected override LocalisableString FormatCount(long count) => count.ToLocalisableString();
protected override IHasText CreateText() => new ArgonScoreTextComponent(Anchor.TopRight) protected override IHasText CreateText() => new ArgonScoreTextComponent(Anchor.TopRight, BeatmapsetsStrings.ShowScoreboardHeadersScore.ToUpper())
{ {
RequiredDisplayDigits = { BindTarget = RequiredDisplayDigits }, RequiredDisplayDigits = { BindTarget = RequiredDisplayDigits },
WireframeOpacity = { BindTarget = WireframeOpacity }, WireframeOpacity = { BindTarget = WireframeOpacity },
ShowLabel = { BindTarget = ShowLabel },
}; };
private partial class ArgonScoreTextComponent : ArgonCounterTextComponent private partial class ArgonScoreTextComponent : ArgonCounterTextComponent

View File

@ -214,7 +214,10 @@ namespace osu.Game.Skinning
Size = new Vector2(380, 72), Size = new Vector2(380, 72),
Position = new Vector2(4, 5) Position = new Vector2(4, 5)
}, },
new ArgonScoreCounter(), new ArgonScoreCounter
{
ShowLabel = { Value = false },
},
new ArgonHealthDisplay(), new ArgonHealthDisplay(),
new BoxElement new BoxElement
{ {