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

@ -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>