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);
        }
Beispiel #2
0
        public Task UpdateOptions(PlayerOptionsData options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            var command = new UpdatePlayerOptionsCommand
            {
                RoomId  = _roomId,
                Options = options
            };

            return(_context.Send(command));
        }
Beispiel #3
0
        public async Task UpdatePlayerOptions(Guid userId, PlayerOptionsData options)
        {
            EnsureUserIsOnline(userId);
            EnsureGameIsNotStarted();

            if (!_playerListEditor.Contains(userId))
            {
                return;
            }
            var updated = _playerListEditor.Update(userId, options);

            if (!updated)
            {
                return;
            }
            var playerUpdated = new PlayerUpdated(_state.RoomId, _playerListEditor[userId]);
            await _hub.NotifyEverybody(playerUpdated);
        }
Beispiel #4
0
        public async Task UpdatePlayerOptions(Guid userId, PlayerOptionsData options)
        {
            await _lobby.UpdatePlayerOptions(userId, options);

            await WriteStateAsync();
        }
Beispiel #5
0
        public Task UpdateOptions(PlayerOptionsData options)
        {
            var lobby = EnsureIsInLobby();

            return(lobby.UpdatePlayerOptions(_state.UserId, options));
        }
Beispiel #6
0
 public Task UpdateOptions(PlayerOptionsData options)
 {
     return(_player.UpdateOptions(options));
 }