1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-06 06:57:39 +08:00

Move implementation into resetTrack for safety

This commit is contained in:
Dean Herbert 2019-11-08 18:51:01 +09:00
parent e904928314
commit a849bc0746

View File

@ -69,14 +69,6 @@ namespace osu.Game.Screens.Edit
clock = new EditorClock(Beatmap.Value, beatDivisor) { IsCoupled = false };
clock.ChangeSource(sourceClock);
if (Beatmap.Value.Beatmap.HitObjects.Count > 0)
{
double targetTime = Beatmap.Value.Beatmap.HitObjects[0].StartTime;
double beatLength = Beatmap.Value.Beatmap.ControlPointInfo.TimingPointAt(targetTime).BeatLength;
clock.Seek(Math.Max(0, targetTime - beatLength));
}
dependencies.CacheAs<IFrameBasedClock>(clock);
dependencies.CacheAs<IAdjustableClock>(clock);
dependencies.Cache(beatDivisor);
@ -249,7 +241,8 @@ namespace osu.Game.Screens.Edit
base.OnEntering(last);
Background.FadeColour(Color4.DarkGray, 500);
resetTrack();
resetTrack(true);
}
public override bool OnExiting(IScreen next)
@ -260,10 +253,24 @@ namespace osu.Game.Screens.Edit
return base.OnExiting(next);
}
private void resetTrack()
private void resetTrack(bool seekToStart = false)
{
Beatmap.Value.Track?.ResetSpeedAdjustments();
Beatmap.Value.Track?.Stop();
if (seekToStart)
{
double targetTime = 0;
if (Beatmap.Value.Beatmap.HitObjects.Count > 0)
{
// seek to one beat length before the first hitobject
targetTime = Beatmap.Value.Beatmap.HitObjects[0].StartTime;
targetTime -= Beatmap.Value.Beatmap.ControlPointInfo.TimingPointAt(targetTime).BeatLength;
}
clock.Seek(Math.Max(0, targetTime));
}
}
private void exportBeatmap() => host.OpenFileExternally(Beatmap.Value.Save());