Esempio n. 1
0
        public async Task JoinLobby(long lobbyId, string gameName)
        {
            Context.Connection.Metadata.Add("lobbyId", lobbyId);
            Context.Connection.Metadata.Add("gameName", gameName);
            var player    = GetLoggedPlayer();
            var lobby     = _lobbyService.FindByIdAndGameName(lobbyId, gameName);
            var groupName = GenerateGroupName(lobbyId, gameName);

            try
            {
                lobby.AddPlayer(player);
                await Groups.AddAsync(Context.ConnectionId, groupName);

                await Clients.Group(groupName).InvokeAsync("updatePlayers", ConvertPlayersToNames(lobby.ConnectedPlayers));
            }
            catch (FullLobbyExceptioncs e)
            {
                await Clients.Client(Context.ConnectionId).InvokeAsync("handleFullLobby");

                await Clients.Client(Context.ConnectionId).InvokeAsync("updatePlayers", ConvertPlayersToNames(lobby.ConnectedPlayers));
            }
        }