Add PlayerLoader TestCase and fix dummy beatmap load procedure

This commit is contained in:
Dean Herbert 2018-04-20 17:30:27 +09:00
parent de85436534
commit 8bf25542cb
3 changed files with 35 additions and 10 deletions

View File

@ -0,0 +1,24 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Allocation;
using osu.Game.Beatmaps;
using osu.Game.Screens.Play;
namespace osu.Game.Tests.Visual
{
public class TestCasePlayerLoader : OsuTestCase
{
[BackgroundDependencyLoader]
private void load(OsuGameBase game)
{
AddStep("load dummy beatmap", () => Add(new PlayerLoader(new Player
{
InitialBeatmap = new DummyWorkingBeatmap(game),
AllowPause = false,
AllowLeadIn = false,
AllowResults = false,
})));
}
}
}

View File

@ -77,7 +77,7 @@ public class Player : ScreenWithBeatmapBackground, IProvideCursor
private DrawableStoryboard storyboard;
private Container storyboardContainer;
private bool loadedSuccessfully => RulesetContainer?.Objects.Any() == true;
public bool LoadedBeatmapSuccessfully => RulesetContainer?.Objects.Any() == true;
[BackgroundDependencyLoader]
private void load(AudioManager audio, APIAccess api, OsuConfigManager config)
@ -86,10 +86,7 @@ private void load(AudioManager audio, APIAccess api, OsuConfigManager config)
WorkingBeatmap working = Beatmap.Value;
if (working is DummyWorkingBeatmap)
{
Exit();
return;
}
sampleRestart = audio.Sample.Get(@"Gameplay/restart");
@ -122,14 +119,15 @@ private void load(AudioManager audio, APIAccess api, OsuConfigManager config)
}
if (!RulesetContainer.Objects.Any())
throw new InvalidOperationException("Beatmap contains no hit objects!");
{
Logger.Error(new InvalidOperationException("Beatmap contains no hit objects!"), "Beatmap contains no hit objects!");
return;
}
}
catch (Exception e)
{
Logger.Error(e, "Could not load beatmap sucessfully!");
//couldn't load, hard abort!
Exit();
return;
}
@ -293,7 +291,7 @@ protected override void OnEntering(Screen last)
{
base.OnEntering(last);
if (!loadedSuccessfully)
if (!LoadedBeatmapSuccessfully)
return;
Content.Alpha = 0;
@ -343,7 +341,7 @@ protected override bool OnExiting(Screen next)
return base.OnExiting(next);
}
if (loadedSuccessfully)
if (LoadedBeatmapSuccessfully)
pauseContainer?.Pause();
return true;

View File

@ -163,7 +163,10 @@ private void pushWhenLoaded()
//Note that this may change if the player we load requested a re-run.
ValidForResume = false;
Push(player);
if (player.LoadedBeatmapSuccessfully)
Push(player);
else
Exit();
});
}, 500);
}