diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index 6ec827e881..8b2a06ad0b 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -20,7 +20,7 @@ namespace osu.Game.Configuration Set(OsuSetting.DisplayStarsMinimum, 0.0, 0, 10); Set(OsuSetting.DisplayStarsMaximum, 10.0, 0, 10); - Set(OsuSetting.SelectionRandomType, SelectionRandomType.Random); + Set(OsuSetting.SelectionRandomType, SelectionRandomType.RandomPermutation); Set(OsuSetting.ChatDisplayHeight, ChatOverlay.DEFAULT_HEIGHT, 0.2, 1); diff --git a/osu.Game/Configuration/SelectionRandomType.cs b/osu.Game/Configuration/SelectionRandomType.cs index a2cd3ba7e8..298ee71e36 100644 --- a/osu.Game/Configuration/SelectionRandomType.cs +++ b/osu.Game/Configuration/SelectionRandomType.cs @@ -7,9 +7,9 @@ namespace osu.Game.Configuration { public enum SelectionRandomType { - [Description("Random")] - Random, [Description("Never repeat")] - RandomPermutation + RandomPermutation, + [Description("Random")] + Random } -} +} \ No newline at end of file diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index 7db9803804..26820fc388 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -73,7 +73,7 @@ namespace osu.Game.Screens.Select private readonly List groups = new List(); private Bindable randomType; - private readonly HashSet seenGroups = new HashSet(); + private readonly List seenGroups = new List(); private readonly List panels = new List(); @@ -172,25 +172,25 @@ namespace osu.Game.Screens.Select public void SelectRandom() { - List visibleGroups = groups.Where(selectGroup => selectGroup.State != BeatmapGroupState.Hidden).ToList(); - if (visibleGroups.Count < 1) + IEnumerable visibleGroups = groups.Where(selectGroup => selectGroup.State != BeatmapGroupState.Hidden); + if (!visibleGroups.Any()) return; BeatmapGroup group; if (randomType == SelectionRandomType.RandomPermutation) { - List notSeenGroups = visibleGroups.Except(seenGroups).ToList(); + IEnumerable notSeenGroups = visibleGroups.Except(seenGroups); if (!notSeenGroups.Any()) { seenGroups.Clear(); notSeenGroups = visibleGroups; } - group = notSeenGroups[RNG.Next(notSeenGroups.Count)]; + group = notSeenGroups.ElementAt(RNG.Next(notSeenGroups.Count())); seenGroups.Add(group); } else - group = visibleGroups[RNG.Next(visibleGroups.Count)]; + group = visibleGroups.ElementAt(RNG.Next(visibleGroups.Count())); BeatmapPanel panel = group.BeatmapPanels[RNG.Next(group.BeatmapPanels.Count)];