From 882ace6efea12be861efc400d5b61e0a8dd48a0d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 8 Dec 2020 14:33:47 +0900 Subject: [PATCH] Make MultiplayerRoomUser equatable --- .../MultiplayerRoomUser.cs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomUser.cs b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomUser.cs index c5fed1629c..3daebe3dda 100644 --- a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomUser.cs +++ b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoomUser.cs @@ -1,21 +1,41 @@ // 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 osu.Game.Users; namespace osu.Game.Online.RealtimeMultiplayer { - public class MultiplayerRoomUser + public class MultiplayerRoomUser : IEquatable { public MultiplayerRoomUser(in int userId) { UserID = userId; } - public long UserID { get; set; } + public long UserID { get; } public MultiplayerUserState State { get; set; } public User User { get; set; } + + public bool Equals(MultiplayerRoomUser other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + + return UserID == other.UserID; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + + return Equals((MultiplayerRoomUser)obj); + } + + public override int GetHashCode() => UserID.GetHashCode(); } }