1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-18 09:09:52 +08:00

Merge pull request #26411 from zacwm/disable-intro-track-pause

Disable pausing music during intro sequence
This commit is contained in:
Bartłomiej Dach
2024-01-08 13:37:59 +01:00
committed by GitHub
Unverified
4 changed files with 49 additions and 2 deletions
@@ -0,0 +1,39 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System.Linq;
using NUnit.Framework;
using osu.Framework.Testing;
using osu.Game.Input.Bindings;
using osu.Game.Screens.Menu;
namespace osu.Game.Tests.Visual.Menus
{
public partial class TestSceneIntroMusicActionHandling : OsuGameTestScene
{
private GlobalActionContainer globalActionContainer => Game.ChildrenOfType<GlobalActionContainer>().First();
public override void SetUpSteps()
{
CreateNewGame();
// we do not want to progress to main menu immediately, hence the override and lack of `ConfirmAtMainMenu()` call here.
}
[Test]
public void TestPauseDuringIntro()
{
AddUntilStep("Wait for music", () => Game?.MusicController.IsPlaying == true);
// Check that pause doesn't work during intro sequence.
AddStep("Toggle playback", () => globalActionContainer.TriggerPressed(GlobalAction.MusicPlay));
AddAssert("Still playing before menu", () => Game?.MusicController.IsPlaying == true);
AddUntilStep("Wait for main menu", () => Game?.ScreenStack.CurrentScreen is MainMenu menu && menu.IsLoaded);
// Check that toggling after intro still works.
AddStep("Toggle playback", () => globalActionContainer.TriggerPressed(GlobalAction.MusicPlay));
AddUntilStep("Music paused", () => Game?.MusicController.IsPlaying == false && Game?.MusicController.UserPauseRequested == true);
AddStep("Toggle playback", () => globalActionContainer.TriggerPressed(GlobalAction.MusicPlay));
AddUntilStep("Music resumed", () => Game?.MusicController.IsPlaying == true && Game?.MusicController.UserPauseRequested == false);
}
}
}
+2
View File
@@ -95,6 +95,8 @@ namespace osu.Game.Screens.Menu
Colour = Color4.Black
};
public override bool? AllowGlobalTrackControl => false;
protected IntroScreen([CanBeNull] Func<MainMenu> createNextScreen = null)
{
this.createNextScreen = createNextScreen;
+2
View File
@@ -51,6 +51,8 @@ namespace osu.Game.Screens.Menu
public override bool AllowExternalScreenChange => true;
public override bool? AllowGlobalTrackControl => true;
private Screen songSelect;
private MenuSideFlashes sideFlashes;
+6 -2
View File
@@ -58,6 +58,12 @@ namespace osu.Game.Tests.Visual
[SetUpSteps]
public virtual void SetUpSteps()
{
CreateNewGame();
ConfirmAtMainMenu();
}
protected void CreateNewGame()
{
AddStep("Create new game instance", () =>
{
@@ -71,8 +77,6 @@ namespace osu.Game.Tests.Visual
AddUntilStep("Wait for load", () => Game.IsLoaded);
AddUntilStep("Wait for intro", () => Game.ScreenStack.CurrentScreen is IntroScreen);
ConfirmAtMainMenu();
}
[TearDownSteps]