diff --git a/osu.Game/Screens/SelectV2/BeatmapCarousel.cs b/osu.Game/Screens/SelectV2/BeatmapCarousel.cs index 43c3a21f0f..4c70b8c58f 100644 --- a/osu.Game/Screens/SelectV2/BeatmapCarousel.cs +++ b/osu.Game/Screens/SelectV2/BeatmapCarousel.cs @@ -47,7 +47,7 @@ namespace osu.Game.Screens.SelectV2 return SPACING * 2; // Beatmap difficulty panels do not overlap with themselves or any other panel. - if (top.Model is BeatmapInfo || bottom.Model is BeatmapInfo) + if (grouping.BeatmapSetsGroupedTogether && (top.Model is BeatmapInfo || bottom.Model is BeatmapInfo)) return SPACING; return -SPACING; @@ -365,6 +365,7 @@ namespace osu.Game.Screens.SelectV2 #region Drawable pooling private readonly DrawablePool beatmapPanelPool = new DrawablePool(100); + private readonly DrawablePool standalonePanelPool = new DrawablePool(100); private readonly DrawablePool setPanelPool = new DrawablePool(100); private readonly DrawablePool groupPanelPool = new DrawablePool(100); private readonly DrawablePool starsGroupPanelPool = new DrawablePool(11); @@ -374,6 +375,7 @@ namespace osu.Game.Screens.SelectV2 AddInternal(starsGroupPanelPool); AddInternal(groupPanelPool); AddInternal(beatmapPanelPool); + AddInternal(standalonePanelPool); AddInternal(setPanelPool); } @@ -406,8 +408,9 @@ namespace osu.Game.Screens.SelectV2 return groupPanelPool.Get(); case BeatmapInfo: - // TODO: if beatmap is a group selection target, it needs to be a different drawable - // with more information attached. + if (!grouping.BeatmapSetsGroupedTogether) + return standalonePanelPool.Get(); + return beatmapPanelPool.Get(); case BeatmapSetInfo: diff --git a/osu.Game/Screens/SelectV2/BeatmapCarouselFilterGrouping.cs b/osu.Game/Screens/SelectV2/BeatmapCarouselFilterGrouping.cs index 4d6f51b67c..f8004282db 100644 --- a/osu.Game/Screens/SelectV2/BeatmapCarouselFilterGrouping.cs +++ b/osu.Game/Screens/SelectV2/BeatmapCarouselFilterGrouping.cs @@ -54,7 +54,7 @@ namespace osu.Game.Screens.SelectV2 HashSet? currentGroupItems = null; HashSet? currentSetItems = null; - BeatmapSetsGroupedTogether = criteria.Group != GroupMode.Difficulty; + BeatmapSetsGroupedTogether = criteria.Sort != SortMode.Difficulty; foreach (var item in items) { @@ -100,6 +100,8 @@ namespace osu.Game.Screens.SelectV2 { if (lastGroupItem != null) lastGroupItem.NestedItemCount++; + + item.DrawHeight = PanelBeatmapStandalone.HEIGHT; } addItem(item);