Doesn't allow randomizer to select invisible maps

This commit is contained in:
Endrik Tombak 2017-12-31 03:10:54 +02:00
parent 398d90ee52
commit d032790e19

View File

@ -231,8 +231,8 @@ namespace osu.Game.Screens.Select
public void SelectNextRandom() public void SelectNextRandom()
{ {
var visible = beatmapSets.Where(s => !s.Filtered).ToList(); var visibleSets = beatmapSets.Where(s => !s.Filtered).ToList();
if (!visible.Any()) if (!visibleSets.Any())
return; return;
if (selectedBeatmap != null) if (selectedBeatmap != null)
@ -249,20 +249,21 @@ namespace osu.Game.Screens.Select
if (RandomAlgorithm == RandomSelectAlgorithm.RandomPermutation) if (RandomAlgorithm == RandomSelectAlgorithm.RandomPermutation)
{ {
var notYetVisitedSets = visible.Except(previouslyVisitedRandomSets).ToList(); var notYetVisitedSets = visibleSets.Except(previouslyVisitedRandomSets).ToList();
if (!notYetVisitedSets.Any()) if (!notYetVisitedSets.Any())
{ {
previouslyVisitedRandomSets.Clear(); previouslyVisitedRandomSets.Clear();
notYetVisitedSets = visible; notYetVisitedSets = visibleSets;
} }
set = notYetVisitedSets.ElementAt(RNG.Next(notYetVisitedSets.Count)); set = notYetVisitedSets.ElementAt(RNG.Next(notYetVisitedSets.Count));
previouslyVisitedRandomSets.Add(set); previouslyVisitedRandomSets.Add(set);
} }
else else
set = visible.ElementAt(RNG.Next(visible.Count)); set = visibleSets.ElementAt(RNG.Next(visibleSets.Count));
select(set.Beatmaps.Skip(RNG.Next(set.Beatmaps.Count())).FirstOrDefault()); var visibleBeatmaps = set.Beatmaps.Where(s => !s.Filtered).ToList();
select(visibleBeatmaps.Skip(RNG.Next(visibleBeatmaps.Count())).FirstOrDefault());
} }
public void SelectPreviousRandom() public void SelectPreviousRandom()