1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-06 03:03:05 +08:00

Merge pull request #1820 from peppy/fix-play-song-select-tests

Fix song select dummy beatmap once and for all
This commit is contained in:
Dan Balasescu 2018-01-03 14:21:00 +09:00 committed by GitHub
commit b80a393bac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 10 deletions

View File

@ -51,11 +51,12 @@ namespace osu.Game.Tests.Visual
private class TestSongSelect : PlaySongSelect private class TestSongSelect : PlaySongSelect
{ {
public WorkingBeatmap CurrentBeatmap => Beatmap.Value; public WorkingBeatmap CurrentBeatmap => Beatmap.Value;
public WorkingBeatmap CurrentBeatmapDetailsBeatmap => BeatmapDetails.Beatmap;
public new BeatmapCarousel Carousel => base.Carousel; public new BeatmapCarousel Carousel => base.Carousel;
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(BeatmapManager baseManager) private void load(OsuGameBase game)
{ {
TestSongSelect songSelect = null; TestSongSelect songSelect = null;
@ -69,12 +70,16 @@ namespace osu.Game.Tests.Visual
dependencies.Cache(rulesets = new RulesetStore(contextFactory)); dependencies.Cache(rulesets = new RulesetStore(contextFactory));
dependencies.Cache(manager = new BeatmapManager(storage, contextFactory, rulesets, null) dependencies.Cache(manager = new BeatmapManager(storage, contextFactory, rulesets, null)
{ {
DefaultBeatmap = defaultBeatmap = baseManager.GetWorkingBeatmap(null) DefaultBeatmap = defaultBeatmap = game.Beatmap.Default
}); });
void loadNewSongSelect(bool deleteMaps = false) => AddStep("reload song select", () => void loadNewSongSelect(bool deleteMaps = false) => AddStep("reload song select", () =>
{ {
if (deleteMaps) manager.DeleteAll(); if (deleteMaps)
{
manager.DeleteAll();
game.Beatmap.SetDefault();
}
if (songSelect != null) if (songSelect != null)
{ {
@ -91,6 +96,8 @@ namespace osu.Game.Tests.Visual
AddAssert("dummy selected", () => songSelect.CurrentBeatmap == defaultBeatmap); AddAssert("dummy selected", () => songSelect.CurrentBeatmap == defaultBeatmap);
AddAssert("dummy shown on wedge", () => songSelect.CurrentBeatmapDetailsBeatmap == defaultBeatmap);
AddStep("import test maps", () => AddStep("import test maps", () =>
{ {
for (int i = 0; i < 100; i += 10) for (int i = 0; i < 100; i += 10)

View File

@ -229,11 +229,15 @@ namespace osu.Game.Screens.Select
} }
} }
public void SelectNextRandom() /// <summary>
/// Select the next beatmap in the random sequence.
/// </summary>
/// <returns>True if a selection could be made, else False.</returns>
public bool SelectNextRandom()
{ {
var visible = beatmapSets.Where(s => !s.Filtered).ToList(); var visible = beatmapSets.Where(s => !s.Filtered).ToList();
if (!visible.Any()) if (!visible.Any())
return; return false;
if (selectedBeatmap != null) if (selectedBeatmap != null)
{ {
@ -263,6 +267,7 @@ namespace osu.Game.Screens.Select
set = visible.ElementAt(RNG.Next(visible.Count)); set = visible.ElementAt(RNG.Next(visible.Count));
select(set.Beatmaps.Skip(RNG.Next(set.Beatmaps.Count())).FirstOrDefault()); select(set.Beatmaps.Skip(RNG.Next(set.Beatmaps.Count())).FirstOrDefault());
return true;
} }
public void SelectPreviousRandom() public void SelectPreviousRandom()

View File

@ -23,7 +23,7 @@ namespace osu.Game.Screens.Select
{ {
private OsuScreen player; private OsuScreen player;
private readonly ModSelectOverlay modSelect; private readonly ModSelectOverlay modSelect;
private readonly BeatmapDetailArea beatmapDetails; protected readonly BeatmapDetailArea BeatmapDetails;
private bool removeAutoModOnResume; private bool removeAutoModOnResume;
public PlaySongSelect() public PlaySongSelect()
@ -35,13 +35,13 @@ namespace osu.Game.Screens.Select
Anchor = Anchor.BottomCentre, Anchor = Anchor.BottomCentre,
}); });
LeftContent.Add(beatmapDetails = new BeatmapDetailArea LeftContent.Add(BeatmapDetails = new BeatmapDetailArea
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Padding = new MarginPadding { Top = 10, Right = 5 }, Padding = new MarginPadding { Top = 10, Right = 5 },
}); });
beatmapDetails.Leaderboard.ScoreSelected += s => Push(new Results(s)); BeatmapDetails.Leaderboard.ScoreSelected += s => Push(new Results(s));
} }
private SampleChannel sampleConfirm; private SampleChannel sampleConfirm;
@ -78,7 +78,7 @@ namespace osu.Game.Screens.Select
beatmap.Mods.BindTo(modSelect.SelectedMods); beatmap.Mods.BindTo(modSelect.SelectedMods);
beatmapDetails.Beatmap = beatmap; BeatmapDetails.Beatmap = beatmap;
if (beatmap.Track != null) if (beatmap.Track != null)
beatmap.Track.Looping = true; beatmap.Track.Looping = true;

View File

@ -449,9 +449,16 @@ namespace osu.Game.Screens.Select
private void carouselBeatmapsLoaded() private void carouselBeatmapsLoaded()
{ {
if (!Beatmap.IsDefault && Beatmap.Value.BeatmapSetInfo?.DeletePending == false) if (!Beatmap.IsDefault && Beatmap.Value.BeatmapSetInfo?.DeletePending == false)
{
Carousel.SelectBeatmap(Beatmap.Value.BeatmapInfo); Carousel.SelectBeatmap(Beatmap.Value.BeatmapInfo);
}
else if (Carousel.SelectedBeatmapSet == null) else if (Carousel.SelectedBeatmapSet == null)
Carousel.SelectNextRandom(); {
if (!Carousel.SelectNextRandom())
// in the case random selection failed, we want to trigger selectionChanged
// to show the dummy beatmap (we have nothing else to display).
carouselSelectionChanged(null);
}
} }
private void delete(BeatmapSetInfo beatmap) private void delete(BeatmapSetInfo beatmap)