From baf16cfbc3a30082996acb9bde002b58ff815105 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 8 Dec 2020 14:33:38 +0900 Subject: [PATCH] Add room settings related model and event flow --- .../RealtimeMultiplayer/ISpectatorClient.cs | 6 +++++ .../RealtimeMultiplayer/MultiplayerRoom.cs | 2 ++ .../MultiplayerRoomSettings.cs | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomSettings.cs 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}"; + } +}