From ce73ae792fada7a425ca6e4c9f9e33ed681e8ba7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 27 Oct 2016 13:36:04 +0900 Subject: [PATCH] Change panel selection logic to avoid looping. --- osu.Game/Beatmaps/Drawable/BeatmapGroup.cs | 16 +++++++--------- osu.Game/Beatmaps/Drawable/BeatmapPanel.cs | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/osu.Game/Beatmaps/Drawable/BeatmapGroup.cs b/osu.Game/Beatmaps/Drawable/BeatmapGroup.cs index 9baa393854..6c3c15b576 100644 --- a/osu.Game/Beatmaps/Drawable/BeatmapGroup.cs +++ b/osu.Game/Beatmaps/Drawable/BeatmapGroup.cs @@ -25,7 +25,7 @@ namespace osu.Game.Beatmaps.Drawable private const float collapsedAlpha = 0.5f; private const float collapsedWidth = 0.8f; - private BeatmapInfo selectedBeatmap; + private BeatmapPanel selectedPanel; /// /// Fires when one of our difficulties was selected. Will fire on first expand. @@ -53,9 +53,9 @@ namespace osu.Game.Beatmaps.Drawable header.GlowRadius = 5; header.BorderColour = new Color4(header.BorderColour.R, header.BorderColour.G, header.BorderColour.B, 255); - if (selectedBeatmap == null) + if (selectedPanel == null) (difficulties.Children.FirstOrDefault() as BeatmapPanel).Selected = true; - SelectionChanged?.Invoke(this, selectedBeatmap); + SelectionChanged?.Invoke(this, selectedPanel?.Beatmap); break; case GroupState.Collapsed: FadeTo(collapsedAlpha, 250); @@ -122,14 +122,12 @@ namespace osu.Game.Beatmaps.Drawable State = GroupState.Collapsed; } - private void panelGainedSelection(BeatmapInfo map) + private void panelGainedSelection(BeatmapPanel panel) { - selectedBeatmap = map; - - foreach (BeatmapPanel panel in difficulties.Children) - if (panel.Beatmap != map) panel.Selected = false; + if (selectedPanel != null) selectedPanel.Selected = false; + selectedPanel = panel; - SelectionChanged?.Invoke(this, map); + SelectionChanged?.Invoke(this, panel.Beatmap); } protected override bool OnClick(InputState state) diff --git a/osu.Game/Beatmaps/Drawable/BeatmapPanel.cs b/osu.Game/Beatmaps/Drawable/BeatmapPanel.cs index 2283a0ce69..2d61a282f4 100644 --- a/osu.Game/Beatmaps/Drawable/BeatmapPanel.cs +++ b/osu.Game/Beatmaps/Drawable/BeatmapPanel.cs @@ -19,7 +19,7 @@ namespace osu.Game.Beatmaps.Drawable { public BeatmapInfo Beatmap; - public Action GainedSelection; + public Action GainedSelection; private bool selected; @@ -38,7 +38,7 @@ namespace osu.Game.Beatmaps.Drawable selected ? 255 : 0); GlowRadius = selected ? 3 : 0; - if (selected) GainedSelection?.Invoke(Beatmap); + if (selected) GainedSelection?.Invoke(this); } }