Merge pull request #9391 from MiraiSubject/intro-loop

This commit is contained in:
Dean Herbert 2020-06-29 12:56:10 +09:00 committed by GitHub
commit f7d74c138f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 29 additions and 12 deletions

View File

@ -19,10 +19,10 @@ namespace osu.Game.Tests.Visual.Menus
[Cached] [Cached]
private OsuLogo logo; private OsuLogo logo;
protected OsuScreenStack IntroStack;
protected IntroTestScene() protected IntroTestScene()
{ {
OsuScreenStack introStack = null;
Children = new Drawable[] Children = new Drawable[]
{ {
new Box new Box
@ -45,17 +45,17 @@ namespace osu.Game.Tests.Visual.Menus
logo.FinishTransforms(); logo.FinishTransforms();
logo.IsTracking = false; logo.IsTracking = false;
introStack?.Expire(); IntroStack?.Expire();
Add(introStack = new OsuScreenStack Add(IntroStack = new OsuScreenStack
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
}); });
introStack.Push(CreateScreen()); IntroStack.Push(CreateScreen());
}); });
AddUntilStep("wait for menu", () => introStack.CurrentScreen is MainMenu); AddUntilStep("wait for menu", () => IntroStack.CurrentScreen is MainMenu);
} }
protected abstract IScreen CreateScreen(); protected abstract IScreen CreateScreen();

View File

@ -11,5 +11,18 @@ namespace osu.Game.Tests.Visual.Menus
public class TestSceneIntroWelcome : IntroTestScene public class TestSceneIntroWelcome : IntroTestScene
{ {
protected override IScreen CreateScreen() => new IntroWelcome(); protected override IScreen CreateScreen() => new IntroWelcome();
public TestSceneIntroWelcome()
{
AddAssert("check if menu music loops", () =>
{
var menu = IntroStack?.CurrentScreen as MainMenu;
if (menu == null)
return false;
return menu.Track.Looping;
});
}
} }
} }

View File

@ -73,7 +73,6 @@ namespace osu.Game.Screens.Menu
MenuVoice = config.GetBindable<bool>(OsuSetting.MenuVoice); MenuVoice = config.GetBindable<bool>(OsuSetting.MenuVoice);
MenuMusic = config.GetBindable<bool>(OsuSetting.MenuMusic); MenuMusic = config.GetBindable<bool>(OsuSetting.MenuMusic);
seeya = audio.Samples.Get(SeeyaSampleName); seeya = audio.Samples.Get(SeeyaSampleName);
BeatmapSetInfo setInfo = null; BeatmapSetInfo setInfo = null;

View File

@ -39,6 +39,8 @@ namespace osu.Game.Screens.Menu
welcome = audio.Samples.Get(@"Intro/Welcome/welcome"); welcome = audio.Samples.Get(@"Intro/Welcome/welcome");
pianoReverb = audio.Samples.Get(@"Intro/Welcome/welcome_piano"); pianoReverb = audio.Samples.Get(@"Intro/Welcome/welcome_piano");
Track.Looping = true;
} }
protected override void LogoArriving(OsuLogo logo, bool resuming) protected override void LogoArriving(OsuLogo logo, bool resuming)

View File

@ -6,6 +6,7 @@ using System.Linq;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Audio.Track;
using osu.Framework.Bindables; using osu.Framework.Bindables;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
@ -63,6 +64,8 @@ namespace osu.Game.Screens.Menu
protected override BackgroundScreen CreateBackground() => background; protected override BackgroundScreen CreateBackground() => background;
internal Track Track { get; private set; }
private Bindable<float> holdDelay; private Bindable<float> holdDelay;
private Bindable<bool> loginDisplayed; private Bindable<bool> loginDisplayed;
@ -173,15 +176,15 @@ namespace osu.Game.Screens.Menu
base.OnEntering(last); base.OnEntering(last);
buttons.FadeInFromZero(500); buttons.FadeInFromZero(500);
var track = Beatmap.Value.Track; Track = Beatmap.Value.Track;
var metadata = Beatmap.Value.Metadata; var metadata = Beatmap.Value.Metadata;
if (last is IntroScreen && track != null) if (last is IntroScreen && Track != null)
{ {
if (!track.IsRunning) if (!Track.IsRunning)
{ {
track.Seek(metadata.PreviewTime != -1 ? metadata.PreviewTime : 0.4f * track.Length); Track.Seek(metadata.PreviewTime != -1 ? metadata.PreviewTime : 0.4f * Track.Length);
track.Start(); Track.Start();
} }
} }
} }