Merge pull request #1 from Desconocidosmh/Fix-music-playing-while-exiting-from-editor

Fix music playing while exiting from editor
This commit is contained in:
Oskar Solecki 2019-07-09 00:11:40 +02:00 committed by GitHub
commit 52b54506c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 20 deletions

View File

@ -306,7 +306,7 @@ private void beatmapChanged(ValueChangedEvent<WorkingBeatmap> beatmap)
private void currentTrackCompleted()
{
if (!Beatmap.Value.Track.Looping && !Beatmap.Disabled)
musicController.NextTrack();
MusicController.NextTrack();
}
#endregion
@ -484,7 +484,7 @@ protected override void LoadComplete()
Origin = Anchor.TopRight,
}, rightFloatingOverlayContent.Add, true);
loadComponentSingleFile(musicController = new MusicController
loadComponentSingleFile(MusicController = new MusicController
{
GetToolbarHeight = () => ToolbarOffset,
Anchor = Anchor.TopRight,
@ -752,7 +752,7 @@ private void updateActiveState(bool isActive)
private ScalingContainer screenContainer;
private MusicController musicController;
public MusicController MusicController { get; private set; }
protected override bool OnExiting()
{

View File

@ -66,6 +66,8 @@ public class MusicController : OsuFocusedOverlayContainer
/// </summary>
public Func<float> GetToolbarHeight;
public bool UserRequestedPause { get; private set; }
public MusicController()
{
Width = 400;
@ -287,6 +289,8 @@ private void play()
return;
}
UserRequestedPause = track.IsRunning;
if (track.IsRunning)
track.Stop();
else

View File

@ -243,21 +243,6 @@ public override bool OnExiting(IScreen next)
{
Background.FadeColour(Color4.White, 500);
if (Beatmap.Value.Track != null)
{
if (isExitingGame)
{
Beatmap.Value.Track.Stop();
}
else
{
Beatmap.Value.Track.Tempo.Value = 1;
Beatmap.Value.Track.Start();
}
}
host.Exiting -= onExitingGame;
return base.OnExiting(next);
}

View File

@ -120,7 +120,7 @@ public override void OnEntering(IScreen last)
var track = Beatmap.Value.Track;
var metadata = Beatmap.Value.Metadata;
if (last is Intro && track != null)
if (last is Intro && track != null && !Game.MusicController.UserRequestedPause)
{
if (!track.IsRunning)
{
@ -189,6 +189,8 @@ public override void OnResuming(IScreen last)
//we may have consumed our preloaded instance, so let's make another.
preloadSongSelect();
ResumeIfNoUserPauseRequested();
}
public override bool OnExiting(IScreen next)

View File

@ -50,7 +50,7 @@ public abstract class OsuScreen : Screen, IOsuScreen, IHasDescription
public virtual bool CursorVisible => true;
protected new OsuGameBase Game => base.Game as OsuGameBase;
protected new OsuGame Game => base.Game as OsuGame;
/// <summary>
/// The <see cref="UserActivity"/> to set the user's activity automatically to when this screen is entered
@ -179,6 +179,15 @@ private void updateActivity()
api.Activity.Value = activity;
}
protected void ResumeIfNoUserPauseRequested()
{
if (Beatmap.Value.Track != null && !Game.MusicController.UserRequestedPause)
{
Beatmap.Value.Track.Tempo.Value = 1;
Beatmap.Value.Track.Start();
}
}
/// <summary>
/// Fired when this screen was entered or resumed and the logo state is required to be adjusted.
/// </summary>

View File

@ -426,6 +426,8 @@ public override void OnEntering(IScreen last)
{
base.OnEntering(last);
ResumeIfNoUserPauseRequested();
this.FadeInFromZero(250);
FilterControl.Activate();
}