public bool Update(Guid userId, PlayerOptionsData options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } EnsurePlayerExists(userId); var usedNicknames = _state .Where(x => x.UserId != userId) .Select(x => x.Nickname) .ToHashSet(); var validator = new PlayerOptionsValidator(usedNicknames); options.EnsureIsValid(validator); var player = this[userId]; var current = new PlayerOptionsData { Nickname = player.Nickname, Color = player.Color }; if (current == options) { return(false); } player.Nickname = options.Nickname; player.Color = options.Color; return(true); }