1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 23:27:25 +08:00

feat: make KeyCounterDisplay skinnable

This commit is contained in:
tsrk 2023-06-14 21:15:12 +02:00
parent c637fddf73
commit e26aeea589
No known key found for this signature in database
GPG Key ID: EBD46BB3049B56D6
3 changed files with 24 additions and 1 deletions

View File

@ -8,13 +8,14 @@ using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Graphics.Containers;
using osu.Game.Configuration;
using osu.Game.Rulesets.UI;
using osu.Game.Skinning;
namespace osu.Game.Screens.Play.HUD
{
/// <summary>
/// A flowing display of all gameplay keys. Individual keys can be added using <see cref="InputTrigger"/> implementations.
/// </summary>
public abstract partial class KeyCounterDisplay : CompositeDrawable, IAttachableSkinComponent
public abstract partial class KeyCounterDisplay : CompositeDrawable, IAttachableSkinComponent, ISerialisableDrawable
{
/// <summary>
/// Whether the key counter should be visible regardless of the configuration value.
@ -78,5 +79,7 @@ namespace osu.Game.Screens.Play.HUD
base.Dispose(isDisposing);
controller.OnNewTrigger -= Add;
}
public bool UsesFixedAnchor { get; set; }
}
}

View File

@ -12,6 +12,7 @@ using osu.Game.Audio;
using osu.Game.Beatmaps.Formats;
using osu.Game.Extensions;
using osu.Game.IO;
using osu.Game.Screens.Play;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osuTK;
@ -113,6 +114,7 @@ namespace osu.Game.Skinning
var combo = container.OfType<DefaultComboCounter>().FirstOrDefault();
var ppCounter = container.OfType<PerformancePointsCounter>().FirstOrDefault();
var songProgress = container.OfType<ArgonSongProgress>().FirstOrDefault();
var keyCounter = container.OfType<ArgonKeyCounterDisplay>().FirstOrDefault();
if (score != null)
{
@ -168,6 +170,13 @@ namespace osu.Game.Skinning
{
songProgress.Position = new Vector2(0, -10);
songProgress.Scale = new Vector2(0.9f, 1);
if (keyCounter != null)
{
keyCounter.Anchor = Anchor.BottomLeft;
keyCounter.Origin = Anchor.BottomLeft;
keyCounter.Position = new Vector2(50, -57);
}
}
}
})
@ -179,6 +188,7 @@ namespace osu.Game.Skinning
new DefaultAccuracyCounter(),
new DefaultHealthDisplay(),
new ArgonSongProgress(),
new ArgonKeyCounterDisplay(),
new BarHitErrorMeter(),
new BarHitErrorMeter(),
new PerformancePointsCounter()

View File

@ -90,6 +90,8 @@ namespace osu.Game.Skinning
var accuracy = container.OfType<DefaultAccuracyCounter>().FirstOrDefault();
var combo = container.OfType<DefaultComboCounter>().FirstOrDefault();
var ppCounter = container.OfType<PerformancePointsCounter>().FirstOrDefault();
var songProgress = container.OfType<DefaultSongProgress>().FirstOrDefault();
var keyCounter = container.OfType<DefaultKeyCounterDisplay>().FirstOrDefault();
if (score != null)
{
@ -141,6 +143,13 @@ namespace osu.Game.Skinning
hitError2.Origin = Anchor.CentreLeft;
}
}
if (songProgress != null && keyCounter != null)
{
keyCounter.Anchor = Anchor.BottomRight;
keyCounter.Origin = Anchor.BottomRight;
keyCounter.Position = new Vector2(10, songProgress.Height + 10);
}
})
{
Children = new Drawable[]
@ -150,6 +159,7 @@ namespace osu.Game.Skinning
new DefaultAccuracyCounter(),
new DefaultHealthDisplay(),
new DefaultSongProgress(),
new DefaultKeyCounterDisplay(),
new BarHitErrorMeter(),
new BarHitErrorMeter(),
new PerformancePointsCounter()