diff --git a/osu.Game/Online/RealtimeMultiplayer/ISpectatorClient.cs b/osu.Game/Online/RealtimeMultiplayer/ISpectatorClient.cs
index d5f6baad43..1e6832e728 100644
--- a/osu.Game/Online/RealtimeMultiplayer/ISpectatorClient.cs
+++ b/osu.Game/Online/RealtimeMultiplayer/ISpectatorClient.cs
@@ -27,5 +27,11 @@ namespace osu.Game.Online.RealtimeMultiplayer
///
/// The user.
Task UserLeft(MultiplayerRoomUser user);
+
+ ///
+ /// Signals that the settings for this room have changed.
+ ///
+ /// The updated room settings.
+ Task SettingsChanged(MultiplayerRoomSettings newSettings);
}
}
diff --git a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs
index db3993255a..61320b9d73 100644
--- a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs
+++ b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs
@@ -15,6 +15,8 @@ namespace osu.Game.Online.RealtimeMultiplayer
public MultiplayerRoomState State { get; set; }
+ public MultiplayerRoomSettings Settings { get; set; }
+
private List users = new List();
public IReadOnlyList Users
diff --git a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomSettings.cs b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomSettings.cs
new file mode 100644
index 0000000000..4c2c014cd9
--- /dev/null
+++ b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomSettings.cs
@@ -0,0 +1,25 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using JetBrains.Annotations;
+using osu.Game.Online.API;
+
+namespace osu.Game.Online.RealtimeMultiplayer
+{
+ public class MultiplayerRoomSettings : IEquatable
+ {
+ public int? BeatmapID { get; set; }
+
+ public int? RulesetID { get; set; }
+
+ [NotNull]
+ public IEnumerable Mods { get; set; } = Enumerable.Empty();
+
+ public bool Equals(MultiplayerRoomSettings other) => BeatmapID == other?.BeatmapID && Mods.SequenceEqual(other?.Mods) && RulesetID == other?.RulesetID;
+
+ public override string ToString() => $"Beatmap:{BeatmapID} Mods:{string.Join(',', Mods)} Ruleset:{RulesetID}";
+ }
+}