예제 #1
0
        public Task Join(string type = "Belot")
        {
            joinedLobbyType = type;
            var lobbyJoinRequest = new LobbyConnectRequest()
            {
                UserName = this.BotName, LobbyName = this.LobbyToJoin
            };

            return(hubConnection.SendAsync("JoinLobby", lobbyJoinRequest));
        }
예제 #2
0
        public async Task JoinLobby(LobbyConnectRequest lobbyConnectRequest)
        {
            var lobby           = this.lobbyManagerService.Lobbies.FirstOrDefault(x => x.Name == lobbyConnectRequest.LobbyName);
            var type            = lobby.Type;
            var conenctResponse = new LobbyConnectResponse();

            var lobbyUser = new LobbyUser()
            {
                Id   = this.Context.ConnectionId,
                Name = lobbyConnectRequest.UserName
            };



            if (lobby.LobbyUsers.Count < 4)
            {
                if (lobby.LobbyUsers.Count == 0)
                {
                    lobby.HostId = lobbyUser.Id;
                }

                lobby.LobbyUsers.Add(lobbyUser);


                conenctResponse.Succeded  = true;
                conenctResponse.LobbyName = lobby.Name;

                await this.Clients.Caller.SendAsync(ChannelConstants.LobbyConnectionAnswer, conenctResponse);

                await this.Groups.AddToGroupAsync(this.Context.ConnectionId, lobby.Name);

                await this.UpdateLobbies(type);
            }
            else
            {
                conenctResponse.Succeded  = false;
                conenctResponse.LobbyName = lobby.Name;

                await this.Clients.Caller.SendAsync(ChannelConstants.LobbyConnectionAnswer, conenctResponse);
            }
        }