From fb728fbed175f3beb717c31cfc76046292e20212 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 21 Jul 2022 18:56:39 +0900 Subject: [PATCH] Fix FPS counter not being wide enough to show large fps numbers --- osu.Game/Graphics/UserInterface/FPSCounter.cs | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/osu.Game/Graphics/UserInterface/FPSCounter.cs b/osu.Game/Graphics/UserInterface/FPSCounter.cs index 9d5aa525d7..db86199667 100644 --- a/osu.Game/Graphics/UserInterface/FPSCounter.cs +++ b/osu.Game/Graphics/UserInterface/FPSCounter.cs @@ -29,6 +29,8 @@ namespace osu.Game.Graphics.UserInterface private Container background = null!; + private Container counters = null!; + private const float idle_background_alpha = 0.4f; private readonly BindableBool showFpsDisplay = new BindableBool(true); @@ -49,7 +51,7 @@ namespace osu.Game.Graphics.UserInterface mainContent = new Container { Alpha = 0, - Size = new Vector2(42, 26), + Height = 26, Children = new Drawable[] { background = new Container @@ -68,21 +70,30 @@ namespace osu.Game.Graphics.UserInterface }, } }, - counterUpdateFrameTime = new FrameTimeCounter + counters = new Container { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, - Margin = new MarginPadding(1), - Y = -2, + AutoSizeAxes = Axes.Both, + Children = new Drawable[] + { + counterUpdateFrameTime = new FrameTimeCounter + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Margin = new MarginPadding(1), + Y = -2, + }, + counterDrawFPS = new FramesPerSecondCounter + { + Anchor = Anchor.TopRight, + Origin = Anchor.TopRight, + Margin = new MarginPadding(2), + Y = 10, + Scale = new Vector2(0.8f), + } + } }, - counterDrawFPS = new FramesPerSecondCounter - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Margin = new MarginPadding(2), - Y = 10, - Scale = new Vector2(0.8f), - } } }, }; @@ -159,6 +170,8 @@ namespace osu.Game.Graphics.UserInterface { base.Update(); + mainContent.Width = Math.Max(mainContent.Width, counters.DrawWidth); + // Handle the case where the window has become inactive or the user changed the // frame limiter (we want to show the FPS as it's changing, even if it isn't an outlier). bool aimRatesChanged = updateAimFPS();