public void TestModReinstantiation() { TestPlayer player = null; TestMod gameMod = null; TestMod playerMod1 = null; TestMod playerMod2 = null; AddStep("load player", () => { Mods.Value = new[] { gameMod = new TestMod() }; stack.Push(loader = new TestPlayerLoader(() => player = new TestPlayer())); }); AddUntilStep("wait for loader to become current", () => loader.IsCurrentScreen()); AddStep("mouse in centre", () => InputManager.MoveMouseTo(loader.ScreenSpaceDrawQuad.Centre)); AddUntilStep("wait for player to be current", () => player.IsCurrentScreen()); AddStep("retrieve mods", () => playerMod1 = (TestMod)player.Mods.Value.Single()); AddAssert("game mods not applied", () => gameMod.Applied == false); AddAssert("player mods applied", () => playerMod1.Applied); AddStep("restart player", () => { var lastPlayer = player; player = null; lastPlayer.Restart(); }); AddUntilStep("wait for player to be current", () => player.IsCurrentScreen()); AddStep("retrieve mods", () => playerMod2 = (TestMod)player.Mods.Value.Single()); AddAssert("game mods not applied", () => gameMod.Applied == false); AddAssert("player has different mods", () => playerMod1 != playerMod2); AddAssert("player mods applied", () => playerMod2.Applied); }
public void TestBlockLoadViaMouseMovement() { AddStep("load dummy beatmap", () => stack.Push(loader = new TestPlayerLoader(() => new TestPlayer(false, false)))); AddRepeatStep("move mouse", () => InputManager.MoveMouseTo(loader.VisualSettings.ScreenSpaceDrawQuad.TopLeft + (loader.VisualSettings.ScreenSpaceDrawQuad.BottomRight - loader.VisualSettings.ScreenSpaceDrawQuad.TopLeft) * RNG.NextSingle()), 20); AddAssert("loader still active", () => loader.IsCurrentScreen()); AddUntilStep("loads after idle", () => !loader.IsCurrentScreen()); }
/// <summary> /// Sets the input manager child to a new test player loader container instance. /// </summary> /// <param name="interactive">If the test player should behave like the production one.</param> /// <param name="beforeLoadAction">An action to run before player load but after bindable leases are returned.</param> private void resetPlayer(bool interactive, Action beforeLoadAction = null) { beforeLoadAction?.Invoke(); prepareBeatmap(); LoadScreen(loader = new TestPlayerLoader(() => player = new TestPlayer(interactive, interactive))); }
private void performFullSetup(bool allowPause = false) { setupUserSettings(); AddStep("Start player loader", () => songSelect.Push(playerLoader = new TestPlayerLoader(player = new LoadBlockingTestPlayer(allowPause)))); AddUntilStep("Wait for Player Loader to load", () => playerLoader.IsLoaded); AddStep("Move mouse to center of screen", () => InputManager.MoveMouseTo(playerLoader.ScreenPos)); AddUntilStep("Wait for player to load", () => player.IsLoaded); }
public void TestLoadContinuation() { SlowLoadPlayer slowPlayer = null; AddStep("load slow dummy beatmap", () => { LoadScreen(loader = new TestPlayerLoader(() => slowPlayer = new SlowLoadPlayer(false, false))); Scheduler.AddDelayed(() => slowPlayer.AllowLoad.Set(), 5000); }); AddUntilStep("wait for player to be current", () => slowPlayer.IsCurrentScreen()); }
/// <summary> /// Sets the input manager child to a new test player loader container instance. /// </summary> /// <param name="interactive">If the test player should behave like the production one.</param> /// <param name="beforeLoadAction">An action to run before player load but after bindable leases are returned.</param> private void resetPlayer(bool interactive, Action beforeLoadAction = null) { beforeLoadAction?.Invoke(); Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); Beatmap.Value.BeatmapInfo.EpilepsyWarning = epilepsyWarning; foreach (var mod in SelectedMods.Value.OfType <IApplicableToTrack>()) { mod.ApplyToTrack(Beatmap.Value.Track); } LoadScreen(loader = new TestPlayerLoader(() => player = new TestPlayer(interactive, interactive))); }
/// <summary> /// Sets the input manager child to a new test player loader container instance. /// </summary> /// <param name="interactive">If the test player should behave like the production one.</param> /// <param name="beforeLoadAction">An action to run before player load but after bindable leases are returned.</param> /// <param name="afterLoadAction">An action to run after container load.</param> public void ResetPlayer(bool interactive, Action beforeLoadAction = null, Action afterLoadAction = null) { audioManager.Volume.SetDefault(); InputManager.Clear(); beforeLoadAction?.Invoke(); Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); InputManager.Child = container = new TestPlayerLoaderContainer( loader = new TestPlayerLoader(() => { afterLoadAction?.Invoke(); return(player = new TestPlayer(interactive, interactive)); })); }
public void TestPlayerLoaderSettingsHover() { setupUserSettings(); AddStep("Start player loader", () => songSelect.Push(playerLoader = new TestPlayerLoader(player = new LoadBlockingTestPlayer { BlockLoad = true }))); AddUntilStep("Wait for Player Loader to load", () => playerLoader?.IsLoaded ?? false); AddAssert("Background retained from song select", () => songSelect.IsBackgroundCurrent()); AddStep("Trigger background preview", () => { InputManager.MoveMouseTo(playerLoader.ScreenPos); InputManager.MoveMouseTo(playerLoader.VisualSettingsPos); }); AddUntilStep("Screen is dimmed and blur applied", () => songSelect.IsBackgroundDimmed() && songSelect.IsUserBlurApplied()); AddStep("Stop background preview", () => InputManager.MoveMouseTo(playerLoader.ScreenPos)); AddUntilStep("Screen is undimmed and user blur removed", () => songSelect.IsBackgroundUndimmed() && playerLoader.IsBlurCorrect()); }
public void TestLoadContinuation() { Player player = null; SlowLoadPlayer slowPlayer = null; AddStep("load dummy beatmap", () => stack.Push(loader = new TestPlayerLoader(() => player = new TestPlayer(false, false)))); AddUntilStep("wait for current", () => loader.IsCurrentScreen()); AddStep("mouse in centre", () => InputManager.MoveMouseTo(loader.ScreenSpaceDrawQuad.Centre)); AddUntilStep("wait for player to be current", () => player.IsCurrentScreen()); AddStep("load slow dummy beatmap", () => { stack.Push(loader = new TestPlayerLoader(() => slowPlayer = new SlowLoadPlayer(false, false))); Scheduler.AddDelayed(() => slowPlayer.AllowLoad.Set(), 5000); }); AddUntilStep("wait for player to be current", () => slowPlayer.IsCurrentScreen()); }
/// <summary> /// Sets the input manager child to a new test player loader container instance. /// </summary> /// <param name="interactive">If the test player should behave like the production one.</param> /// <param name="beforeLoadAction">An action to run before player load but after bindable leases are returned.</param> /// <param name="afterLoadAction">An action to run after container load.</param> public void ResetPlayer(bool interactive, Action beforeLoadAction = null, Action afterLoadAction = null) { audioManager.Volume.SetDefault(); InputManager.Clear(); beforeLoadAction?.Invoke(); Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); foreach (var mod in SelectedMods.Value.OfType <IApplicableToTrack>()) { mod.ApplyToTrack(Beatmap.Value.Track); } InputManager.Child = container = new TestPlayerLoaderContainer( loader = new TestPlayerLoader(() => { afterLoadAction?.Invoke(); return(player = new TestPlayer(interactive, interactive)); })); }