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

Refactor playlist update to remove .Contains() check

This commit is contained in:
smoogipoo 2021-02-19 13:32:32 +09:00
parent bc10fcafae
commit 183a481a34

View File

@ -537,21 +537,30 @@ namespace osu.Game.Online.Multiplayer
var mods = settings.RequiredMods.Select(m => m.ToMod(ruleset)); var mods = settings.RequiredMods.Select(m => m.ToMod(ruleset));
var allowedMods = settings.AllowedMods.Select(m => m.ToMod(ruleset)); var allowedMods = settings.AllowedMods.Select(m => m.ToMod(ruleset));
// Update an existing playlist item from the API room, or create a new item. // Try to retrieve the existing playlist item from the API room.
var playlistItem = apiRoom.Playlist.FirstOrDefault(i => i.ID == settings.PlaylistItemId) ?? new PlaylistItem(); var playlistItem = apiRoom.Playlist.FirstOrDefault(i => i.ID == settings.PlaylistItemId);
playlistItem.ID = settings.PlaylistItemId; if (playlistItem != null)
playlistItem.Beatmap.Value = beatmap; updateItem(playlistItem);
playlistItem.Ruleset.Value = ruleset.RulesetInfo; else
playlistItem.RequiredMods.Clear(); {
playlistItem.RequiredMods.AddRange(mods); // An existing playlist item does not exist, so append a new one.
playlistItem.AllowedMods.Clear(); updateItem(playlistItem = new PlaylistItem());
playlistItem.AllowedMods.AddRange(allowedMods);
if (!apiRoom.Playlist.Contains(playlistItem))
apiRoom.Playlist.Add(playlistItem); apiRoom.Playlist.Add(playlistItem);
}
CurrentMatchPlayingItem.Value = playlistItem; CurrentMatchPlayingItem.Value = playlistItem;
void updateItem(PlaylistItem item)
{
item.ID = settings.PlaylistItemId;
item.Beatmap.Value = beatmap;
item.Ruleset.Value = ruleset.RulesetInfo;
item.RequiredMods.Clear();
item.RequiredMods.AddRange(mods);
item.AllowedMods.Clear();
item.AllowedMods.AddRange(allowedMods);
}
} }
/// <summary> /// <summary>