Add fallback intro screen

This commit is contained in:
Shivam 2020-06-02 03:48:23 +02:00
parent 00024f56fa
commit 578c955658
4 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,15 @@
// 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 NUnit.Framework;
using osu.Framework.Screens;
using osu.Game.Screens.Menu;
namespace osu.Game.Tests.Visual.Menus
{
[TestFixture]
public class TestSceneIntroFallback : IntroTestScene
{
protected override IScreen CreateScreen() => new IntroFallback();
}
}

View File

@ -6,6 +6,7 @@ namespace osu.Game.Configuration
public enum IntroSequence
{
Circles,
Fallback,
Triangles,
Random
}

View File

@ -51,6 +51,9 @@ private IntroScreen getIntroSequence()
case IntroSequence.Circles:
return new IntroCircles();
case IntroSequence.Fallback:
return new IntroFallback();
default:
return new IntroTriangles();
}

View File

@ -0,0 +1,56 @@
// 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 osu.Framework.Allocation;
using osu.Framework.Audio;
using osu.Framework.Audio.Sample;
using osu.Framework.Screens;
using osu.Framework.Graphics;
namespace osu.Game.Screens.Menu
{
public class IntroFallback : IntroScreen
{
protected override string BeatmapHash => "64E00D7022195959BFA3109D09C2E2276C8F12F486B91FCF6175583E973B48F2";
protected override string BeatmapFile => "welcome.osz";
private const double delay_step_two = 3000;
private SampleChannel welcome;
[BackgroundDependencyLoader]
private void load(AudioManager audio)
{
if (MenuVoice.Value)
welcome = audio.Samples.Get(@"welcome");
}
protected override void LogoArriving(OsuLogo logo, bool resuming)
{
base.LogoArriving(logo, resuming);
if (!resuming)
{
welcome?.Play();
Scheduler.AddDelayed(delegate
{
StartTrack();
PrepareMenuLoad();
Scheduler.AddDelayed(LoadMenu, 0);
}, delay_step_two);
logo.ScaleTo(1);
logo.FadeIn();
logo.PlayIntro();
}
}
public override void OnSuspending(IScreen next)
{
this.FadeOut(300);
base.OnSuspending(next);
}
}
}