1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 07:27:25 +08:00

Don't consider expired items in visibility check

This commit is contained in:
Dan Balasescu 2021-12-09 04:02:16 +09:00
parent c34c580ad4
commit 8398f86440

View File

@ -29,7 +29,10 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match.Playlist
Spacing = new Vector2(0, 2)
};
protected override DrawableRoomPlaylistItem CreateDrawablePlaylistItem(PlaylistItem item) => new QueuePlaylistItem(item);
protected override DrawableRoomPlaylistItem CreateDrawablePlaylistItem(PlaylistItem item) => new QueuePlaylistItem(item)
{
Items = { BindTarget = Items }
};
private class QueueFillFlowContainer : FillFlowContainer<RearrangeableListItem<PlaylistItem>>
{
@ -47,6 +50,8 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match.Playlist
private class QueuePlaylistItem : DrawableRoomPlaylistItem
{
public readonly IBindableList<PlaylistItem> Items = new BindableList<PlaylistItem>();
[Resolved]
private IAPIProvider api { get; set; }
@ -56,9 +61,6 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match.Playlist
[Resolved(typeof(Room), nameof(Room.QueueMode))]
private Bindable<QueueMode> queueMode { get; set; }
[Resolved(typeof(Room), nameof(Room.Playlist))]
private BindableList<PlaylistItem> playlist { get; set; }
public QueuePlaylistItem(PlaylistItem item)
: base(item)
{
@ -70,7 +72,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match.Playlist
RequestDeletion = item => multiplayerClient.RemovePlaylistItem(item.ID);
playlist.BindCollectionChanged((_, __) => updateDeleteButtonVisibility());
Items.BindCollectionChanged((_, __) => updateDeleteButtonVisibility());
queueMode.BindValueChanged(_ => updateDeleteButtonVisibility());
SelectedItem.BindValueChanged(_ => updateDeleteButtonVisibility(), true);
}
@ -78,7 +80,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Match.Playlist
private void updateDeleteButtonVisibility()
{
AllowDeletion = queueMode.Value != QueueMode.HostOnly
&& playlist.Count > 1
&& Items.Count > 1
&& Item.OwnerID == api.LocalUser.Value.OnlineID
&& SelectedItem.Value != Item;
}