From f9145ce5b47555072d215c712809be66695952b1 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 17 Feb 2020 17:02:19 +0900 Subject: [PATCH 1/2] Fix playlist items added with the wrong IDs --- osu.Game/Screens/Select/MatchSongSelect.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Select/MatchSongSelect.cs b/osu.Game/Screens/Select/MatchSongSelect.cs index a115ab9841..2f3674642e 100644 --- a/osu.Game/Screens/Select/MatchSongSelect.cs +++ b/osu.Game/Screens/Select/MatchSongSelect.cs @@ -62,7 +62,7 @@ namespace osu.Game.Screens.Select { PlaylistItem item = new PlaylistItem { - ID = (Playlist.LastOrDefault()?.ID + 1) ?? 0, + ID = Playlist.Count == 0 ? 0 : Playlist.Max(p => p.ID) + 1 }; populateItemFromCurrent(item); From 84ea279c947b03be9ace0d9bd23e157983a648cd Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 17 Feb 2020 17:04:58 +0900 Subject: [PATCH 2/2] Add test --- .../Multiplayer/TestSceneMatchSongSelect.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs index 5820da811d..2c6f34d8a6 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMatchSongSelect.cs @@ -134,6 +134,22 @@ namespace osu.Game.Tests.Visual.Multiplayer AddAssert("playlist has 2 items", () => Room.Playlist.Count == 2); } + [Test] + public void TestAddItemAfterRearrangement() + { + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddStep("rearrange", () => + { + var item = Room.Playlist[0]; + Room.Playlist.RemoveAt(0); + Room.Playlist.Add(item); + }); + + AddStep("create new item", () => songSelect.BeatmapDetails.CreateNewItem()); + AddAssert("new item has id 2", () => Room.Playlist.Last().ID == 2); + } + private class TestMatchSongSelect : MatchSongSelect { public new MatchBeatmapDetailArea BeatmapDetails => (MatchBeatmapDetailArea)base.BeatmapDetails;