Example #1
0
        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);
        }