From d7fc9043812b99dc09d843ea94c17da50e8c2f47 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Fri, 11 Oct 2019 00:12:36 +0700 Subject: [PATCH] Make prev button can do restart track --- osu.Game/Overlays/MusicController.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index f5c36a9cac..9b54a6c9a6 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -136,11 +136,20 @@ namespace osu.Game.Overlays } /// - /// Play the previous track. + /// Play the previous track or restart the current track if it's current time below 5000ms /// /// Whether the operation was successful. public bool PrevTrack() { + var currentTrackPosition = current?.Track.CurrentTime; + + if (currentTrackPosition >= 5000) + { + SeekTo(0); + + return true; + } + queuedDirection = TrackChangeDirection.Prev; var playable = BeatmapSets.TakeWhile(i => i.ID != current.BeatmapSetInfo.ID).LastOrDefault() ?? BeatmapSets.LastOrDefault(); @@ -260,8 +269,9 @@ namespace osu.Game.Overlays return true; case GlobalAction.MusicPrev: + var shouldRestart = current?.Track.CurrentTime >= 5000; if (PrevTrack()) - onScreenDisplay?.Display(new MusicControllerToast("Previous track")); + onScreenDisplay?.Display(new MusicControllerToast(shouldRestart ? "Restart track" : "Previous track")); return true; }