From 3da4651ea2ee6096ba197d4827f346ced7ad5ce5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 28 May 2025 19:56:17 +0900 Subject: [PATCH 01/11] Reduce maximum sizing of left/right component areas --- osu.Game/Screens/SelectV2/SongSelect.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/SelectV2/SongSelect.cs b/osu.Game/Screens/SelectV2/SongSelect.cs index 504a55a4f8..ee82146a16 100644 --- a/osu.Game/Screens/SelectV2/SongSelect.cs +++ b/osu.Game/Screens/SelectV2/SongSelect.cs @@ -146,9 +146,9 @@ namespace osu.Game.Screens.SelectV2 RelativeSizeAxes = Axes.Both, ColumnDimensions = new[] { - new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 850), + new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 660), new Dimension(), - new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 750), + new Dimension(GridSizeMode.Relative, 0.5f, maxSize: 580), }, Content = new[] { From 88062d0a30a130fdf74c7c4def95ef838e492108 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 28 May 2025 19:56:40 +0900 Subject: [PATCH 02/11] Fix leaderboard not showing last portion near bottom footer --- osu.Game/Screens/SelectV2/SongSelect.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Screens/SelectV2/SongSelect.cs b/osu.Game/Screens/SelectV2/SongSelect.cs index ee82146a16..84be157619 100644 --- a/osu.Game/Screens/SelectV2/SongSelect.cs +++ b/osu.Game/Screens/SelectV2/SongSelect.cs @@ -162,6 +162,11 @@ namespace osu.Game.Screens.SelectV2 // screen-wide scroll handling. Depth = float.MinValue, Shear = OsuGame.SHEAR, + Padding = new MarginPadding + { + Top = -CORNER_RADIUS_HIDE_OFFSET, + Left = -CORNER_RADIUS_HIDE_OFFSET, + }, Children = new Drawable[] { new Container @@ -177,11 +182,6 @@ namespace osu.Game.Screens.SelectV2 wedgesContainer = new FillFlowContainer { RelativeSizeAxes = Axes.Both, - Margin = new MarginPadding - { - Top = -CORNER_RADIUS_HIDE_OFFSET, - Left = -CORNER_RADIUS_HIDE_OFFSET - }, Spacing = new Vector2(0f, 4f), Direction = FillDirection.Vertical, Children = new Drawable[] From f9a3c57f03b87423e6fb7bbb2d95c471798d91b0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 02:29:37 +0900 Subject: [PATCH 03/11] Fix panels flashing white on first display --- osu.Game/Screens/SelectV2/Panel.cs | 46 +++++++++++------------ osu.Game/Screens/SelectV2/PanelBeatmap.cs | 2 + 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/osu.Game/Screens/SelectV2/Panel.cs b/osu.Game/Screens/SelectV2/Panel.cs index de559be4a9..6e3db2fabd 100644 --- a/osu.Game/Screens/SelectV2/Panel.cs +++ b/osu.Game/Screens/SelectV2/Panel.cs @@ -61,11 +61,10 @@ namespace osu.Game.Screens.SelectV2 public Color4? AccentColour { - get => accentColour; set { accentColour = value; - updateDisplay(); + updateAccentColour(); } } @@ -108,7 +107,7 @@ namespace osu.Game.Screens.SelectV2 backgroundBorder = new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.White, + Colour = Color4.Black, }, backgroundLayerHorizontalPadding = new Container { @@ -190,7 +189,11 @@ namespace osu.Game.Screens.SelectV2 { base.LoadComplete(); - Expanded.BindValueChanged(_ => updateDisplay(), true); + Expanded.BindValueChanged(_ => + { + updateEdgeEffect(); + updateXOffset(); + }); Selected.BindValueChanged(selected => { @@ -217,6 +220,9 @@ namespace osu.Game.Screens.SelectV2 { base.PrepareForUse(); + updateAccentColour(); + updateXOffset(); + this.FadeIn(DURATION, Easing.OutQuint); } @@ -236,18 +242,20 @@ namespace osu.Game.Screens.SelectV2 return true; } - private void updateDisplay() + private void updateAccentColour() { var backgroundColour = accentColour ?? Color4.White; + + backgroundAccentGradient.Colour = ColourInfo.GradientHorizontal(backgroundColour.Opacity(0.25f), backgroundColour.Opacity(0f)); + backgroundBorder.Colour = backgroundColour; + + updateEdgeEffect(animated: false); + } + + private void updateEdgeEffect(bool animated = true) + { var edgeEffectColour = accentColour ?? Color4Extensions.FromHex(@"4EBFFF"); - - backgroundAccentGradient.FadeColour(ColourInfo.GradientHorizontal(backgroundColour.Opacity(0.25f), backgroundColour.Opacity(0f)), DURATION, Easing.OutQuint); - backgroundBorder.FadeColour(backgroundColour, DURATION, Easing.OutQuint); - - TopLevelContent.FadeEdgeEffectTo(Expanded.Value ? edgeEffectColour.Opacity(0.5f) : Color4.Black.Opacity(0.4f), DURATION, Easing.OutQuint); - - updateXOffset(); - updateHover(); + TopLevelContent.FadeEdgeEffectTo(Expanded.Value ? edgeEffectColour.Opacity(0.5f) : Color4.Black.Opacity(0.4f), animated ? DURATION : 0, Easing.OutQuint); } private void updateXOffset() @@ -263,23 +271,15 @@ namespace osu.Game.Screens.SelectV2 TopLevelContent.MoveToX(x, DURATION, Easing.OutQuint); } - private void updateHover() - { - if (IsHovered) - hoverLayer.FadeIn(100, Easing.OutQuint); - else - hoverLayer.FadeOut(1000, Easing.OutQuint); - } - protected override bool OnHover(HoverEvent e) { - updateHover(); + hoverLayer.FadeIn(100, Easing.OutQuint); return true; } protected override void OnHoverLost(HoverLostEvent e) { - updateHover(); + hoverLayer.FadeOut(1000, Easing.OutQuint); base.OnHoverLost(e); } diff --git a/osu.Game/Screens/SelectV2/PanelBeatmap.cs b/osu.Game/Screens/SelectV2/PanelBeatmap.cs index 190e563c46..8eededd412 100644 --- a/osu.Game/Screens/SelectV2/PanelBeatmap.cs +++ b/osu.Game/Screens/SelectV2/PanelBeatmap.cs @@ -226,6 +226,8 @@ namespace osu.Game.Screens.SelectV2 // Dirty hack to make sure we don't take up spacing in parent fill flow when not displaying a rank. // I can't find a better way to do this. starRatingDisplay.Margin = new MarginPadding { Left = 1 / starRatingDisplay.Scale.X * (localRank.HasRank ? 0 : -3) }; + + AccentColour = starRatingDisplay.DisplayedDifficultyColour; } private void updateKeyCount() From 8c6a414737b303d00a9ae29021dd2a912166d735 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 02:46:21 +0900 Subject: [PATCH 04/11] Make leaderboard scores semi-transparent --- osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs b/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs index 113894ab8a..213e42282d 100644 --- a/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs +++ b/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs @@ -144,6 +144,7 @@ namespace osu.Game.Screens.SelectV2 { background = new Box { + Alpha = 0.4f, RelativeSizeAxes = Axes.Both, Colour = backgroundColour }, @@ -190,6 +191,7 @@ namespace osu.Game.Screens.SelectV2 { foreground = new Box { + Alpha = 0.4f, RelativeSizeAxes = Axes.Both, Colour = foregroundColour }, From fc66af3b9a250ff3fa6e98c375a142022f3f61df Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 02:55:38 +0900 Subject: [PATCH 05/11] Make leaderboard scores more compact --- osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs b/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs index 213e42282d..dd4e2d4f9c 100644 --- a/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs +++ b/osu.Game/Screens/SelectV2/BeatmapLeaderboardScore.cs @@ -81,7 +81,7 @@ namespace osu.Game.Screens.SelectV2 private const float username_min_width = 120; private const float statistics_regular_min_width = 165; private const float statistics_compact_min_width = 90; - private const float rank_label_width = 60; + private const float rank_label_width = 40; private const int corner_radius = 10; private const int transition_duration = 200; @@ -314,8 +314,8 @@ namespace osu.Game.Screens.SelectV2 Child = statisticsContainer = new FillFlowContainer { Name = @"Statistics container", - Padding = new MarginPadding { Right = 40 }, - Spacing = new Vector2(25, 0), + Padding = new MarginPadding { Right = 10 }, + Spacing = new Vector2(20, 0), Shear = sheared ? -OsuGame.SHEAR : Vector2.Zero, Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, @@ -569,13 +569,13 @@ namespace osu.Game.Screens.SelectV2 private DisplayMode getCurrentDisplayMode() { - if (DrawWidth >= HEIGHT + username_min_width + statistics_regular_min_width + expanded_right_content_width + rank_label_width) + if (DrawWidth >= username_min_width + statistics_regular_min_width + expanded_right_content_width + rank_label_width) return DisplayMode.Full; - if (DrawWidth >= HEIGHT + username_min_width + statistics_regular_min_width + expanded_right_content_width) + if (DrawWidth >= username_min_width + statistics_regular_min_width + expanded_right_content_width) return DisplayMode.Regular; - if (DrawWidth >= HEIGHT + username_min_width + statistics_compact_min_width + expanded_right_content_width) + if (DrawWidth >= username_min_width + statistics_compact_min_width + expanded_right_content_width) return DisplayMode.Compact; return DisplayMode.Minimal; From 1af39b6b5bd2d6619ca2750e5787bd9e54d166ac Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 03:05:07 +0900 Subject: [PATCH 06/11] Fix personal best being cut off weirdly --- .../Screens/SelectV2/BeatmapLeaderboardWedge.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/osu.Game/Screens/SelectV2/BeatmapLeaderboardWedge.cs b/osu.Game/Screens/SelectV2/BeatmapLeaderboardWedge.cs index 29affaa9af..1f63e3de9f 100644 --- a/osu.Game/Screens/SelectV2/BeatmapLeaderboardWedge.cs +++ b/osu.Game/Screens/SelectV2/BeatmapLeaderboardWedge.cs @@ -10,7 +10,6 @@ using osu.Framework.Bindables; using osu.Framework.Extensions.PolygonExtensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps; using osu.Game.Graphics; @@ -70,7 +69,7 @@ namespace osu.Game.Screens.SelectV2 private readonly IBindable fetchedScores = new Bindable(); - private const float personal_best_height = 80; + private const float personal_best_height = 100; [BackgroundDependencyLoader] private void load() @@ -109,7 +108,10 @@ namespace osu.Game.Screens.SelectV2 RelativeSizeAxes = Axes.X, Height = personal_best_height, Shear = OsuGame.SHEAR, - Margin = new MarginPadding { Left = -40f }, + Margin = new MarginPadding + { + Left = -40f, + }, CornerRadius = 10f, Masking = true, // push the personal best 1px down to hide masking issues @@ -118,11 +120,7 @@ namespace osu.Game.Screens.SelectV2 Alpha = 0f, Children = new Drawable[] { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = colourProvider.Background4, - }, + new WedgeBackground(), new Container { RelativeSizeAxes = Axes.X, From c8389a8683a0e16d43c1e2eafe77e4f81fc26261 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 20:12:32 +0900 Subject: [PATCH 07/11] Adjust panel selection glow and background --- osu.Game/Screens/SelectV2/Panel.cs | 16 ++++++++++------ .../Screens/SelectV2/PanelSetBackground.cs | 18 ++++++------------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/osu.Game/Screens/SelectV2/Panel.cs b/osu.Game/Screens/SelectV2/Panel.cs index 6e3db2fabd..39808e0baf 100644 --- a/osu.Game/Screens/SelectV2/Panel.cs +++ b/osu.Game/Screens/SelectV2/Panel.cs @@ -94,8 +94,8 @@ namespace osu.Game.Screens.SelectV2 EdgeEffect = new EdgeEffectParameters { Type = EdgeEffectType.Shadow, - Offset = new Vector2(1f), - Radius = 10, + Hollow = true, + Radius = 2, }, Children = new Drawable[] { @@ -123,6 +123,8 @@ namespace osu.Game.Screens.SelectV2 { RelativeSizeAxes = Axes.Both, }, + // TODO: this is only used by beatmap panels and should NOT be in this class. + // it's wasting fill rate. backgroundAccentGradient = new Box { RelativeSizeAxes = Axes.Both, @@ -157,10 +159,9 @@ namespace osu.Game.Screens.SelectV2 selectionLayer = new Box { Alpha = 0, - Colour = ColourInfo.GradientHorizontal(colours.BlueDark.Opacity(0), colours.BlueDark.Opacity(0.6f)), - Blending = BlendingParameters.Additive, RelativeSizeAxes = Axes.Both, - Width = 0.3f, + Width = 0.6f, + Blending = BlendingParameters.Additive, Anchor = Anchor.TopRight, Origin = Anchor.TopRight, }, @@ -202,6 +203,7 @@ namespace osu.Game.Screens.SelectV2 else selectionLayer.FadeOut(200, Easing.OutQuint); + updateEdgeEffect(); updateXOffset(); }, true); @@ -249,13 +251,15 @@ namespace osu.Game.Screens.SelectV2 backgroundAccentGradient.Colour = ColourInfo.GradientHorizontal(backgroundColour.Opacity(0.25f), backgroundColour.Opacity(0f)); backgroundBorder.Colour = backgroundColour; + selectionLayer.Colour = ColourInfo.GradientHorizontal(backgroundColour.Opacity(0), backgroundColour.Opacity(0.5f)); + updateEdgeEffect(animated: false); } private void updateEdgeEffect(bool animated = true) { var edgeEffectColour = accentColour ?? Color4Extensions.FromHex(@"4EBFFF"); - TopLevelContent.FadeEdgeEffectTo(Expanded.Value ? edgeEffectColour.Opacity(0.5f) : Color4.Black.Opacity(0.4f), animated ? DURATION : 0, Easing.OutQuint); + TopLevelContent.FadeEdgeEffectTo(Expanded.Value || Selected.Value ? edgeEffectColour.Opacity(0.8f) : Color4.Black.Opacity(0.4f), animated ? DURATION : 0, Easing.OutQuint); } private void updateXOffset() diff --git a/osu.Game/Screens/SelectV2/PanelSetBackground.cs b/osu.Game/Screens/SelectV2/PanelSetBackground.cs index 99dbf90556..dd07be0410 100644 --- a/osu.Game/Screens/SelectV2/PanelSetBackground.cs +++ b/osu.Game/Screens/SelectV2/PanelSetBackground.cs @@ -2,6 +2,7 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; +using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; @@ -61,34 +62,27 @@ namespace osu.Game.Screens.SelectV2 Direction = FillDirection.Horizontal, // This makes the gradient not be perfectly horizontal, but diagonal at a ~40° angle Shear = new Vector2(0.8f, 0), - Alpha = 0.5f, Children = new[] { // The left half with no gradient applied new Box { RelativeSizeAxes = Axes.Both, - Colour = Color4.Black, + Colour = Color4.Black.Opacity(0.5f), Width = 0.4f, }, - // Piecewise-linear gradient with 3 segments to make it appear smoother new Box { RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientHorizontal(Color4.Black, new Color4(0f, 0f, 0f, 0.9f)), - Width = 0.05f, - }, - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientHorizontal(new Color4(0f, 0f, 0f, 0.9f), new Color4(0f, 0f, 0f, 0.1f)), + Colour = ColourInfo.GradientHorizontal(Color4.Black.Opacity(0.5f), Color4.Black.Opacity(0.3f)), Width = 0.2f, }, new Box { RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientHorizontal(new Color4(0f, 0f, 0f, 0.1f), new Color4(0, 0, 0, 0)), - Width = 0.05f, + Colour = ColourInfo.GradientHorizontal(Color4.Black.Opacity(0.3f), Color4.Black.Opacity(0.2f)), + // Slightly more than 1.0 in total to account for shear. + Width = 0.45f, }, } }, From 035541bab28ecf7d3ca2811cd67a191ffc9e38ce Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 20:19:54 +0900 Subject: [PATCH 08/11] Use realtime difficulty colouring for other relevant areas --- osu.Game/Screens/SelectV2/PanelBeatmap.cs | 9 ++++----- osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs | 9 +++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/SelectV2/PanelBeatmap.cs b/osu.Game/Screens/SelectV2/PanelBeatmap.cs index 8eededd412..90de0dd270 100644 --- a/osu.Game/Screens/SelectV2/PanelBeatmap.cs +++ b/osu.Game/Screens/SelectV2/PanelBeatmap.cs @@ -227,7 +227,10 @@ namespace osu.Game.Screens.SelectV2 // I can't find a better way to do this. starRatingDisplay.Margin = new MarginPadding { Left = 1 / starRatingDisplay.Scale.X * (localRank.HasRank ? 0 : -3) }; - AccentColour = starRatingDisplay.DisplayedDifficultyColour; + var diffColour = starRatingDisplay.DisplayedDifficultyColour; + + AccentColour = diffColour; + starCounter.Colour = diffColour; } private void updateKeyCount() @@ -261,10 +264,6 @@ namespace osu.Game.Screens.SelectV2 starCounter.Current = (float)starDifficulty.Stars; difficultyIcon.FadeColour(starDifficulty.Stars > OsuColour.STAR_DIFFICULTY_DEFINED_COLOUR_CUTOFF ? colours.Orange1 : colourProvider.Background5, duration, Easing.OutQuint); - - var starRatingColour = colours.ForStarDifficulty(starDifficulty.Stars); - starCounter.FadeColour(starRatingColour, duration, Easing.OutQuint); - AccentColour = starRatingColour; } public override MenuItem[] ContextMenuItems diff --git a/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs b/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs index 86f8374088..640cdccb1b 100644 --- a/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs +++ b/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs @@ -273,6 +273,11 @@ namespace osu.Game.Screens.SelectV2 // Dirty hack to make sure we don't take up spacing in parent fill flow when not displaying a rank. // I can't find a better way to do this. starRatingDisplay.Margin = new MarginPadding { Left = 1 / starRatingDisplay.Scale.X * (localRank.HasRank ? 0 : -3) }; + + var diffColour = starRatingDisplay.DisplayedDifficultyColour; + + AccentColour = diffColour; + starCounter.Colour = diffColour; } private void updateKeyCount() @@ -306,10 +311,6 @@ namespace osu.Game.Screens.SelectV2 starCounter.Current = (float)starDifficulty.Stars; difficultyIcon.FadeColour(starDifficulty.Stars > OsuColour.STAR_DIFFICULTY_DEFINED_COLOUR_CUTOFF ? colours.Orange1 : colourProvider.Background5, duration, Easing.OutQuint); - - var starRatingColour = colours.ForStarDifficulty(starDifficulty.Stars); - starCounter.FadeColour(starRatingColour, duration, Easing.OutQuint); - AccentColour = colours.ForStarDifficulty(starDifficulty.Stars); } public override MenuItem[] ContextMenuItems From 69b047d72b98e34c6b29c76f782f0034948ecb9e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 20:20:09 +0900 Subject: [PATCH 09/11] Highlight beatmap set header when expanded as if it was selected --- osu.Game/Screens/SelectV2/Panel.cs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/osu.Game/Screens/SelectV2/Panel.cs b/osu.Game/Screens/SelectV2/Panel.cs index 39808e0baf..12b9613039 100644 --- a/osu.Game/Screens/SelectV2/Panel.cs +++ b/osu.Game/Screens/SelectV2/Panel.cs @@ -192,18 +192,13 @@ namespace osu.Game.Screens.SelectV2 Expanded.BindValueChanged(_ => { - updateEdgeEffect(); + updateSelectedState(); updateXOffset(); }); - Selected.BindValueChanged(selected => + Selected.BindValueChanged(_ => { - if (selected.NewValue) - selectionLayer.FadeIn(100, Easing.OutQuint); - else - selectionLayer.FadeOut(200, Easing.OutQuint); - - updateEdgeEffect(); + updateSelectedState(); updateXOffset(); }, true); @@ -253,13 +248,20 @@ namespace osu.Game.Screens.SelectV2 selectionLayer.Colour = ColourInfo.GradientHorizontal(backgroundColour.Opacity(0), backgroundColour.Opacity(0.5f)); - updateEdgeEffect(animated: false); + updateSelectedState(animated: false); } - private void updateEdgeEffect(bool animated = true) + private void updateSelectedState(bool animated = true) { + bool selectedOrExpanded = Expanded.Value || Selected.Value; + var edgeEffectColour = accentColour ?? Color4Extensions.FromHex(@"4EBFFF"); - TopLevelContent.FadeEdgeEffectTo(Expanded.Value || Selected.Value ? edgeEffectColour.Opacity(0.8f) : Color4.Black.Opacity(0.4f), animated ? DURATION : 0, Easing.OutQuint); + TopLevelContent.FadeEdgeEffectTo(selectedOrExpanded ? edgeEffectColour.Opacity(0.8f) : Color4.Black.Opacity(0.4f), animated ? DURATION : 0, Easing.OutQuint); + + if (selectedOrExpanded) + selectionLayer.FadeIn(100, Easing.OutQuint); + else + selectionLayer.FadeOut(200, Easing.OutQuint); } private void updateXOffset() From 4f38f9f486f5aba02e644dfa7bbf619fffda7b28 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 20:31:48 +0900 Subject: [PATCH 10/11] Add very slight background dim --- osu.Game/Screens/SelectV2/SongSelect.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Screens/SelectV2/SongSelect.cs b/osu.Game/Screens/SelectV2/SongSelect.cs index 84be157619..1056c2ff71 100644 --- a/osu.Game/Screens/SelectV2/SongSelect.cs +++ b/osu.Game/Screens/SelectV2/SongSelect.cs @@ -401,6 +401,7 @@ namespace osu.Game.Screens.SelectV2 backgroundModeBeatmap.BlurAmount.Value = 0; backgroundModeBeatmap.Beatmap = beatmap; backgroundModeBeatmap.IgnoreUserSettings.Value = true; + backgroundModeBeatmap.DimWhenUserSettingsIgnored.Value = 0.1f; backgroundModeBeatmap.FadeColour(Color4.White, 250); }); } From 27ce54960626ab80b9e3b7bfb425d5a362353b21 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 29 May 2025 20:43:04 +0900 Subject: [PATCH 11/11] Also apply realtime colour updates to icon --- osu.Game/Screens/SelectV2/PanelBeatmap.cs | 22 ++++++++----------- .../SelectV2/PanelBeatmapStandalone.cs | 22 ++++++++----------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/osu.Game/Screens/SelectV2/PanelBeatmap.cs b/osu.Game/Screens/SelectV2/PanelBeatmap.cs index 90de0dd270..31cebbd152 100644 --- a/osu.Game/Screens/SelectV2/PanelBeatmap.cs +++ b/osu.Game/Screens/SelectV2/PanelBeatmap.cs @@ -210,7 +210,13 @@ namespace osu.Game.Screens.SelectV2 var beatmap = (BeatmapInfo)Item.Model; starDifficultyBindable = difficultyCache.GetBindableDifficulty(beatmap, starDifficultyCancellationSource.Token, SongSelect.SELECTION_DEBOUNCE); - starDifficultyBindable.BindValueChanged(_ => updateDisplay(), true); + starDifficultyBindable.BindValueChanged(_ => + { + var starDifficulty = starDifficultyBindable?.Value ?? default; + + starRatingDisplay.Current.Value = starDifficulty; + starCounter.Current = (float)starDifficulty.Stars; + }, true); } protected override void Update() @@ -231,6 +237,8 @@ namespace osu.Game.Screens.SelectV2 AccentColour = diffColour; starCounter.Colour = diffColour; + + difficultyIcon.Colour = starRatingDisplay.DisplayedStars.Value > OsuColour.STAR_DIFFICULTY_DEFINED_COLOUR_CUTOFF ? colours.Orange1 : colourProvider.Background5; } private void updateKeyCount() @@ -254,18 +262,6 @@ namespace osu.Game.Screens.SelectV2 keyCountText.Alpha = 0; } - private void updateDisplay() - { - const float duration = 500; - - var starDifficulty = starDifficultyBindable?.Value ?? default; - - starRatingDisplay.Current.Value = starDifficulty; - starCounter.Current = (float)starDifficulty.Stars; - - difficultyIcon.FadeColour(starDifficulty.Stars > OsuColour.STAR_DIFFICULTY_DEFINED_COLOUR_CUTOFF ? colours.Orange1 : colourProvider.Background5, duration, Easing.OutQuint); - } - public override MenuItem[] ContextMenuItems { get diff --git a/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs b/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs index 640cdccb1b..ce9513a8a1 100644 --- a/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs +++ b/osu.Game/Screens/SelectV2/PanelBeatmapStandalone.cs @@ -257,7 +257,13 @@ namespace osu.Game.Screens.SelectV2 var beatmap = (BeatmapInfo)Item.Model; starDifficultyBindable = difficultyCache.GetBindableDifficulty(beatmap, starDifficultyCancellationSource.Token, SongSelect.SELECTION_DEBOUNCE); - starDifficultyBindable.BindValueChanged(_ => updateDisplay(), true); + starDifficultyBindable.BindValueChanged(_ => + { + var starDifficulty = starDifficultyBindable?.Value ?? default; + + starRatingDisplay.Current.Value = starDifficulty; + starCounter.Current = (float)starDifficulty.Stars; + }, true); } protected override void Update() @@ -278,6 +284,8 @@ namespace osu.Game.Screens.SelectV2 AccentColour = diffColour; starCounter.Colour = diffColour; + + difficultyIcon.Colour = starRatingDisplay.DisplayedStars.Value > OsuColour.STAR_DIFFICULTY_DEFINED_COLOUR_CUTOFF ? colours.Orange1 : colourProvider.Background5; } private void updateKeyCount() @@ -301,18 +309,6 @@ namespace osu.Game.Screens.SelectV2 keyCountText.Alpha = 0; } - private void updateDisplay() - { - const float duration = 500; - - var starDifficulty = starDifficultyBindable?.Value ?? default; - - starRatingDisplay.Current.Value = starDifficulty; - starCounter.Current = (float)starDifficulty.Stars; - - difficultyIcon.FadeColour(starDifficulty.Stars > OsuColour.STAR_DIFFICULTY_DEFINED_COLOUR_CUTOFF ? colours.Orange1 : colourProvider.Background5, duration, Easing.OutQuint); - } - public override MenuItem[] ContextMenuItems { get