mirror of
https://github.com/ppy/osu.git
synced 2024-09-22 16:47:24 +08:00
Use PlaylistList to manage Prev/Next tracks
This commit is contained in:
parent
5c3b7ac12c
commit
97ebf38288
@ -29,8 +29,8 @@ namespace osu.Game.Overlays.Music
|
|||||||
private IEnumerable<SpriteText> titleSprites;
|
private IEnumerable<SpriteText> titleSprites;
|
||||||
private UnicodeBindableString titleBind;
|
private UnicodeBindableString titleBind;
|
||||||
private UnicodeBindableString artistBind;
|
private UnicodeBindableString artistBind;
|
||||||
private FillFlowContainer<PlaylistItem> Playlist;
|
|
||||||
|
|
||||||
|
private readonly FillFlowContainer<PlaylistItem> Playlist;
|
||||||
public readonly BeatmapSetInfo BeatmapSetInfo;
|
public readonly BeatmapSetInfo BeatmapSetInfo;
|
||||||
|
|
||||||
public Action<BeatmapSetInfo> OnSelect;
|
public Action<BeatmapSetInfo> OnSelect;
|
||||||
|
@ -46,6 +46,24 @@ namespace osu.Game.Overlays.Music
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BeatmapSetInfo NextItem
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var available = items.Children;
|
||||||
|
return (available.SkipWhile(i => !i.Selected).Skip(1).FirstOrDefault() ?? available.FirstOrDefault())?.BeatmapSetInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeatmapSetInfo PreviousItem
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var available = items.Children.Reverse();
|
||||||
|
return (available.SkipWhile(i => !i.Selected).Skip(1).FirstOrDefault() ?? available.FirstOrDefault())?.BeatmapSetInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public PlaylistList()
|
public PlaylistList()
|
||||||
{
|
{
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
|
@ -126,24 +126,24 @@ namespace osu.Game.Overlays.Music
|
|||||||
|
|
||||||
public void PlayPrevious()
|
public void PlayPrevious()
|
||||||
{
|
{
|
||||||
var currentID = beatmapBacking.Value?.BeatmapSetInfo.ID ?? -1;
|
var playable = list.PreviousItem;
|
||||||
var available = BeatmapSets.Reverse();
|
|
||||||
|
|
||||||
var playable = available.SkipWhile(b => b.ID != currentID).Skip(1).FirstOrDefault() ?? available.FirstOrDefault();
|
|
||||||
|
|
||||||
if (playable != null)
|
if (playable != null)
|
||||||
|
{
|
||||||
playSpecified(playable.Beatmaps[0]);
|
playSpecified(playable.Beatmaps[0]);
|
||||||
|
list.SelectedItem = playable;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PlayNext()
|
public void PlayNext()
|
||||||
{
|
{
|
||||||
var currentID = beatmapBacking.Value?.BeatmapSetInfo.ID ?? -1;
|
var playable = list.NextItem;
|
||||||
var available = BeatmapSets;
|
|
||||||
|
|
||||||
var playable = available.SkipWhile(b => b.ID != currentID).Skip(1).FirstOrDefault() ?? available.FirstOrDefault();
|
|
||||||
|
|
||||||
if (playable != null)
|
if (playable != null)
|
||||||
|
{
|
||||||
playSpecified(playable.Beatmaps[0]);
|
playSpecified(playable.Beatmaps[0]);
|
||||||
|
list.SelectedItem = playable;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void playSpecified(BeatmapInfo info)
|
private void playSpecified(BeatmapInfo info)
|
||||||
|
Loading…
Reference in New Issue
Block a user