Add back loop-on-completion

This commit is contained in:
smoogipoo 2020-08-05 21:21:08 +09:00
parent 58660c70a3
commit e9fc783b1d
2 changed files with 17 additions and 17 deletions

View File

@ -427,23 +427,7 @@ namespace osu.Game
updateModDefaults();
var newBeatmap = beatmap.NewValue;
if (newBeatmap != null)
{
// MusicController.Completed += () => Scheduler.AddOnce(() => trackCompleted(newBeatmap));
newBeatmap.BeginAsyncLoad();
}
// void trackCompleted(WorkingBeatmap b)
// {
// // the source of track completion is the audio thread, so the beatmap may have changed before firing.
// if (Beatmap.Value != b)
// return;
//
// if (!MusicController.Looping && !Beatmap.Disabled)
// MusicController.NextTrack();
// }
beatmap.NewValue?.BeginAsyncLoad();
}
private void modsChanged(ValueChangedEvent<IReadOnlyList<Mod>> mods)

View File

@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using JetBrains.Annotations;
using osu.Framework.Allocation;
@ -323,7 +324,10 @@ namespace osu.Game.Overlays
CurrentTrack = null;
if (current != null)
{
trackContainer.Add(CurrentTrack = new DrawableTrack(current.GetRealTrack()));
CurrentTrack.Completed += () => onTrackCompleted(current);
}
TrackChanged?.Invoke(current, direction);
@ -332,6 +336,18 @@ namespace osu.Game.Overlays
queuedDirection = null;
}
private void onTrackCompleted(WorkingBeatmap workingBeatmap)
{
// the source of track completion is the audio thread, so the beatmap may have changed before firing.
if (current != workingBeatmap)
return;
Debug.Assert(CurrentTrack != null);
if (!CurrentTrack.Looping && !beatmap.Disabled)
NextTrack();
}
private bool allowRateAdjustments;
/// <summary>