예제 #1
0
    // Called once the server registers the player right after the connection is established
    public override void OnRegisterEvent()
    {
        print("Game Session received from server");
        clog("Game Session received from server");
        if (isInstructor)
        {
            EdgeManager.JoinOrCreateRoom("playerName", 0, 2);
            //edgeManager.HandleWebSocketMessage("gameStart");
            //EdgeManager.SendUDPMessage(new GamePlayEvent() { eventName = "Start" });
            Debug.LogWarning("Game Start UDP Send");
        }
        else
        {
            Hashtable playertagsHashtable;

            playertagsHashtable = null;

            JoinRoomRequest joinRoomRequest = new JoinRoomRequest(roomId, "playerName" + Random.Range(0, 999), Random.Range(0, 999), playertagsHashtable);
            EdgeManager.wsClient.Send(Messaging <JoinRoomRequest> .Serialize(joinRoomRequest));
        }

        //edgeManager.HandleWebSocketMessage("gameStart");

        EdgeManager.GetAvailableRooms();
        //EdgeManager.GetRooms();
    }
예제 #2
0
        public void PlayerCanJoinAGameRoom()
        {
            var roomId = createRoom();

            authHelper.loginToAccount("userTwo");

            // View open rooms.
            OpenLobbiesResponse openLobbiesResponse = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, openLobbiesResponse.Rooms.Count);
            Assert.AreEqual(roomId, openLobbiesResponse.Rooms[0].Id);
            // Ensure the creator is a member of the game
            Assert.AreEqual(1, openLobbiesResponse.Rooms[0].Players.Count);
            Assert.AreEqual("userOne", openLobbiesResponse.Rooms[0].Players[0].Username);

            JoinRoomRequest joinRequest = new JoinRoomRequest()
            {
                RoomId = roomId,
            };

            JoinRoomResponse joinResponse = client.JoinRoom(joinRequest);

            Assert.AreEqual(joinResponse.Status.IsSuccess, true);

            OpenLobbiesResponse openLobbiesResponseAfterJoin = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponseAfterJoin.Status.IsSuccess, true);
            Assert.AreEqual(1, openLobbiesResponseAfterJoin.Rooms.Count);
            Assert.AreEqual(roomId, openLobbiesResponseAfterJoin.Rooms[0].Id);
            Assert.AreEqual(2, openLobbiesResponseAfterJoin.Rooms[0].Players.Count);
            Assert.IsTrue(openLobbiesResponseAfterJoin.Rooms[0].Players.Any(it => it.Id == authHelper.getAccountId("userTwo")));
        }
예제 #3
0
        public HttpResponseMessage Join([ModelBinder(typeof(JsonNetModelBinder))] JoinRoomRequest request)
        {
            var room = Data.FindRoom(request.GameName);

            if (room == null)
            {
                var joinRoomFailedResponse = new JoinRoomResponse()
                {
                    Result = false
                };
                return(new JsonNetResponseMessage(joinRoomFailedResponse));
            }

            var player = Data.FindPlayer(request.PlayerId);

            if (player == null)
            {
                player = new Player()
                {
                    Name     = request.PlayerId,
                    RoomName = request.GameName
                };

                Data.Players.Add(player.Name, player);
            }
            room.Players.Add(player);

            var response = new JoinRoomResponse()
            {
                Result = true,
                Room   = room
            };

            return(new JsonNetResponseMessage(response));
        }
예제 #4
0
        public void BeingTheLastPlayerToJoinAGameWillStartTheGame()
        {
            CreateRoomResponse roomResponse = client.CreateNewRoom(createRoomRequest("My room!", maxPlayers: 2));

            Assert.AreEqual(roomResponse.Status.IsSuccess, true);
            Assert.IsTrue(roomResponse.CreatedRoom.Id != null);
            var roomId = roomResponse.CreatedRoom.Id;

            authHelper.loginToAccount("userTwo");

            JoinRoomRequest joinRequest = new JoinRoomRequest()
            {
                RoomId = roomId,
            };

            JoinRoomResponse joinResponse = client.JoinRoom(joinRequest);

            Assert.AreEqual(joinResponse.Status.IsSuccess, true);

            // Check to see the room is not visible.
            OpenLobbiesResponse openLobbiesResponseAfterJoin = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponseAfterJoin.Status.IsSuccess, true);
            Assert.AreEqual(0, openLobbiesResponseAfterJoin.Rooms.Count);

            // Check to see the player can see the game because they are a member.
            PlayerCurrentGamesResponse playerGamesResponse = client.GetPlayerCurrentGames(new PlayerCurrentGamesRequest());

            Assert.AreEqual(playerGamesResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, playerGamesResponse.Games.Count);
        }
        public override async Task <JoinRoomResponse> JoinRoom(JoinRoomRequest request, ServerCallContext context)
        {
            DbUserModel dbUserModel = context.UserState["user"] as DbUserModel;

            if (dbUserModel == null)
            {
                return new JoinRoomResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED)
                       }
            }
            ;

            Room room = await Room.GetRoomFromGuid(request.RoomId);

            if (room == null)
            {
                return new JoinRoomResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST)
                       }
            }
            ;

            return(new JoinRoomResponse()
            {
                Status = await room.JoinRoom(dbUserModel)
            });
        }
예제 #6
0
    public void TryJoinRoom(IClient client, JoinRoomRequest data)
    {
        bool canJoin = ServerManager.Instance.Players.TryGetValue(client.ID, out var clientConnection);

        if (!rooms.TryGetValue(data.RoomName, out var room))
        {
            canJoin = false;
        }
        else if (room.ClientConnections.Count >= room.MaxSlots)
        {
            canJoin = false;
        }

        if (canJoin)
        {
            room.AddPlayerToRoom(clientConnection);
        }
        else
        {
            using (Message m = Message.Create((ushort)Tags.LobbyJoinRoomDenied, new LobbyInfoData(GetRoomDataList())))
            {
                client.SendMessage(m, SendMode.Reliable);
            }
        }
    }
예제 #7
0
    void Client_JoinRomme(byte[]  roomid)
    {
        JoinRoomRequest model_join_room = new JoinRoomRequest();

        model_join_room.RoomId = roomid;
        NetHelp.Send <JoinRoomRequest>(Op.Client.JoinRoom, model_join_room, Connection.Client.socket);
    }
예제 #8
0
    public void TryJoinRoom(IClient client, JoinRoomRequest data)
    {
        ClientConnection p;
        Room             r;

        if (!ServerManager.Instance.Players.TryGetValue(client.ID, out p))
        {
            using (Message m = Message.Create((ushort)Tags.LobbyJoinRoomDenied, new LobbyInfoData(GetRoomDataList())))
            {
                client.SendMessage(m, SendMode.Reliable);
            }
            return;
        }

        if (!rooms.TryGetValue(data.RoomName, out r))
        {
            using (Message m = Message.Create((ushort)Tags.LobbyJoinRoomDenied, new LobbyInfoData(GetRoomDataList())))
            {
                client.SendMessage(m, SendMode.Reliable);
            }
            return;
        }

        if (r.ClientConnections.Count >= r.MaxSlots)
        {
            using (Message m = Message.Create((ushort)Tags.LobbyJoinRoomDenied, new LobbyInfoData(GetRoomDataList())))
            {
                client.SendMessage(m, SendMode.Reliable);
            }
        }

        r.AddPlayerToRoom(p);
    }
예제 #9
0
        public void JoinRoomRequest_Instantiates_Properly(string room, bool isPrivate)
        {
            var a = new JoinRoomRequest(room, isPrivate);

            Assert.Equal(room, a.RoomName);
            Assert.Equal(isPrivate, a.IsPrivate);
        }
예제 #10
0
        public void PlayerCannotJoinAGameThatHasAlreadyStarted()
        {
            CreateRoomRequest createRequest = new CreateRoomRequest()
            {
                Anonymous          = false,
                Goal               = Goal.Domination,
                MaxPlayers         = 2,
                IsRanked           = false,
                RoomName           = "My Room!",
                AllowedSpecialists = { "a", "b", "c" },
            };

            CreateRoomResponse roomResponse = client.CreateNewRoom(createRequest);

            Assert.AreEqual(roomResponse.Status.IsSuccess, true);
            Assert.IsTrue(roomResponse.CreatedRoom.RoomId != null);
            var roomId = roomResponse.CreatedRoom.RoomId;

            authHelper.loginToAccount("userTwo");

            JoinRoomRequest joinRequest = new JoinRoomRequest()
            {
                RoomId = roomId,
            };

            JoinRoomResponse joinResponse = client.JoinRoom(joinRequest);

            Assert.AreEqual(joinResponse.Status.IsSuccess, true);

            authHelper.loginToAccount("userThree");
            var exception = client.JoinRoom(joinRequest);

            Assert.AreEqual(exception.Status.IsSuccess, false);
            Assert.AreEqual(exception.Status.Detail, ResponseType.ROOM_IS_FULL.ToString());
        }
예제 #11
0
        public async Task <IRoom> JoinRoom(ChatRoom room, CancellationToken token = default)
        {
            var operationToken = CancellationTokenSource.CreateLinkedTokenSource(clientLifetime.Token, token).Token;

            var chatRoom = new Room(this, room, transport);

            if (!rooms.TryAdd(chatRoom.ChatRoom.Id, chatRoom))
            {
                throw new ChatException($"Cannot add room that already exists [room={chatRoom}]");
            }

            var request  = new JoinRoomRequest(room.Id);
            var response = await transport.Exchange <JoinRoomResponse>(request, operationToken);

            foreach (var chatMessage in response.Messages)
            {
                if (!chatRoom.ReceiveMessage(chatMessage))
                {
                    logger.LogWarning("Failed to deliver [message={Message}] to chat [room={Room}]",
                                      chatMessage,
                                      chatRoom);
                }
            }

            return(chatRoom);
        }
예제 #12
0
        private void joinRoom(int id)
        {
            var downloadComplete = game.DownloadGame(onlineGame);

            Task.Run(async() =>
            {
                await downloadComplete.Task;

                if (downloadComplete.Task.Result == false)
                {
                    failure();

                    return;
                }

                var joinRoom = new JoinRoomRequest(id);

                joinRoom.Success += u =>
                {
                    Schedule(() => LoadComponentAsync(new RoomScreen(u), this.Push));
                };

                joinRoom.Failure += ex =>
                {
                    failure();
                };

                api.Queue(joinRoom);

                void failure()
                {
                    Schedule(() => infoOverlay.Show(@"Hubo un problema al intentar unirse a la sala", Colour4.DarkRed));
                }
            });
        }
예제 #13
0
파일: ChatHub.cs 프로젝트: ewol123/chat.net
        public async Task JoinRoom(JoinRoomRequest request)
        {
            try
            {
                var ctx     = new ValidationContext(request);
                var results = new List <ValidationResult>();
                Validator.TryValidateObject(request, ctx, results, true);
                if (results.Count > 0)
                {
                    throw new ApplicationError("[JoinRoom]", 4);
                }

                var response = await _roomService.JoinRoom(request);

                await Groups.AddToGroupAsync(Context.ConnectionId, response.roomIdentifier.ToString());

                await Clients.Caller.JoinedRoom(response);

                // do not broadcast all the messages for already joined users.
                response.messages = null;
                await Clients.OthersInGroup(response.roomIdentifier.ToString()).BrJoinedRoom(response);
            }
            catch (Exception e)
            {
                var errorResponse = ApplicationError.GetError <JoinRoomResponse>(e, "[JoinRoom]");
                _logger.LogError(e.Message);
                await Clients.Caller.JoinedRoom(errorResponse);
            }
        }
예제 #14
0
        public async Task <HubResponse> JoinRoom(string connectionId, JoinRoomRequest joinRoomRequest)
        {
            if (string.IsNullOrWhiteSpace(joinRoomRequest.Name))
            {
                return(new HubErrorResponse {
                    Message = "Must enter a player name", Method = "JoinRoomAsClient", Title = "Validation Error"
                });
            }

            var includeProperties = string.Join(",", "GameType");
            var room = await _roomRepository.FirstOrDefault(e => e.RoomCode == joinRoomRequest.RoomCode, includeProperties);

            var game = _games.FirstOrDefault(e => e.Key == room.RoomCode).Value;

            var player = new Player
            {
                ConnectionId  = connectionId,
                Name          = joinRoomRequest.Name,
                RoomCode      = joinRoomRequest.RoomCode,
                GroupName     = game.GroupName,
                IsFirstPlayer = game.Players.Count() == 0
            };

            if (game.Players.Count < room.GameType.MaxPlayers)
            {
                if (game.Players.Any(e => e.Key == connectionId))
                {
                    return(new HubErrorResponse {
                        Message = "Player is already connected.", Method = "JoinRoomAsClient"
                    });
                }

                game.Players.Add(connectionId, player);
                _players.Add(connectionId, player);
            }
            else
            {
                // TODO: what to do with player joining if they are outside the max player count? add as spectator?
                return(new HubErrorResponse {
                    Message = "Game is already full!", Method = "JoinRoomAsClient"
                });
            }

            return(new HubSuccessResponse
            {
                Data = new JoinRoomResponse
                {
                    ConnectionId = connectionId,
                    Description = room.GameType.Description,
                    GameName = room.GameType.GameName,
                    GroupName = game.GroupName,
                    Player = player,
                    MinPlayers = room.GameType.MinPlayers,
                    RoomCode = room.RoomCode
                },
                Message = "Joined!",
                Method = "JoinRoomAsClient"
            });
        }
예제 #15
0
    public void JoinRoom()
    {
        JoinRoomRequest request = new JoinRoomRequest();

        request.SendRequest(this.Serial);

        CommonUtils.instance.SwitchViewMask(true);
    }
예제 #16
0
        public override async Task <JoinRoomResponse> JoinRoom(JoinRoomRequest request,
                                                               ServerCallContext context)
        {
            string connectionId = context.GetHttpContext().Connection.Id;

            //   rooms[context.] = request.RoomId;

            return(new JoinRoomResponse());
        }
 private void Awake()
 {
     Init();
     UGUIEventListener.Get(CloseBtn).onClick         = CloseRoomListPanelClick;
     UGUIEventListener.Get(RefreshButton).onClick    = RefreshButtonClick;
     UGUIEventListener.Get(CreateRoomButton).onClick = CreateRoomButtonClick;
     listRoomRequest     = GetComponent <ListRoomRequest>();
     createRoomRequestce = GetComponent <CreateRoomRequest>();
     joinRoomRequest     = GetComponent <JoinRoomRequest>();
 }
예제 #18
0
    /// <summary>
    /// Hàm sẽ gửi lệnh Leave sau đó Send Messeage đến cho Server và đẩy lên server JoinRoomRequest
    /// Ta sẽ viết hàm hứng OnAfterJoinRoom để xử lý khi join room thành công
    /// </summary>
    public void DoJoinRoom(int _zoneID, int _roomID)
    {
        Debug.Log("_zoneID " + _zoneID + " _roomID " + _roomID);
        doJoiningRoom = new RoomInfo(_zoneID, _roomID);
        JoinRoomRequest reqJoin = new JoinRoomRequest();

        reqJoin.ZoneId = _zoneID;
        reqJoin.RoomId = _roomID;
        DoRequest(reqJoin);
    }
예제 #19
0
        public void PlayerCanLeaveAGameRoom()
        {
            CreateRoomResponse roomResponse = client.CreateNewRoom(createRoomRequest("My room!"));

            Assert.AreEqual(roomResponse.Status.IsSuccess, true);
            Assert.IsTrue(roomResponse.CreatedRoom.Id != null);
            var roomId = roomResponse.CreatedRoom.Id;

            authHelper.loginToAccount("userTwo");

            // View open rooms.
            OpenLobbiesResponse openLobbiesResponse = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, openLobbiesResponse.Rooms.Count);
            Assert.AreEqual(roomId, openLobbiesResponse.Rooms[0].Id);
            // Ensure the creator is a member of the game
            Assert.AreEqual(1, openLobbiesResponse.Rooms[0].Players.Count);
            Assert.AreEqual("userOne", openLobbiesResponse.Rooms[0].Players[0].Username);

            JoinRoomRequest joinRequest = new JoinRoomRequest()
            {
                RoomId = roomId,
            };

            JoinRoomResponse joinResponse = client.JoinRoom(joinRequest);

            Assert.AreEqual(joinResponse.Status.IsSuccess, true);

            // View open rooms.
            OpenLobbiesResponse openLobbiesResponsAfterJoin = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponsAfterJoin.Status.IsSuccess, true);
            Assert.AreEqual(1, openLobbiesResponsAfterJoin.Rooms.Count);
            Assert.AreEqual(roomId, openLobbiesResponsAfterJoin.Rooms[0].Id);
            Assert.AreEqual(2, openLobbiesResponsAfterJoin.Rooms[0].Players.Count);

            LeaveRoomRequest leaveRequest = new LeaveRoomRequest()
            {
                RoomId = roomId
            };

            LeaveRoomResponse leaveResponse = client.LeaveRoom(leaveRequest);

            Assert.AreEqual(leaveResponse.Status.IsSuccess, true);

            // Ensure that the player has left the game.
            // View open rooms.
            OpenLobbiesResponse openLobbiesResponsAfterLeave = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponsAfterLeave.Status.IsSuccess, true);
            Assert.AreEqual(1, openLobbiesResponsAfterLeave.Rooms.Count);
            Assert.AreEqual(roomId, openLobbiesResponsAfterLeave.Rooms[0].Id);
            Assert.AreEqual(1, openLobbiesResponsAfterLeave.Rooms[0].Players.Count);
        }
예제 #20
0
        public void JoinRoomRequest_Constructs_The_Correct_Message(string room)
        {
            var a   = new JoinRoomRequest(room);
            var msg = a.ToByteArray();

            var reader = new MessageReader <MessageCode.Server>(msg);
            var code   = reader.ReadCode();

            Assert.Equal(MessageCode.Server.JoinRoom, code);
            Assert.Equal(room, reader.ReadString());
        }
예제 #21
0
    void Awake()
    {
        personalInfo   = transform.Find("PersonalInfo").GetComponent <RectTransform>();
        roomList       = transform.Find("RoomList").GetComponent <RectTransform>();
        roomLayout     = transform.Find("RoomList/ScrollRect/Layout").GetComponent <VerticalLayoutGroup>();
        roomItemPrefab = Resources.Load("UIPanel/RoomItem") as GameObject;

        listRoomRequest   = GetComponent <ListRoomRequest>();
        createRoomRequest = GetComponent <CreateRoomRequest>();
        joinRoomRequest   = GetComponent <JoinRoomRequest>();
    }
예제 #22
0
        public void AdminsCanViewAnyOngoingGameTheyAreNotIn()
        {
            CreateRoomRequest createRequest = new CreateRoomRequest()
            {
                Anonymous          = false,
                Goal               = Goal.Domination,
                MaxPlayers         = 2,
                IsRanked           = false,
                RoomName           = "My Room!",
                AllowedSpecialists = { "a", "b", "c" },
            };

            CreateRoomResponse roomResponse = client.CreateNewRoom(createRequest);

            Assert.AreEqual(roomResponse.Status.IsSuccess, true);
            Assert.IsTrue(roomResponse.CreatedRoom.RoomId != null);
            var roomId = roomResponse.CreatedRoom.RoomId;

            authHelper.loginToAccount("userTwo");

            JoinRoomRequest joinRequest = new JoinRoomRequest()
            {
                RoomId = roomId,
            };

            JoinRoomResponse joinResponse = client.JoinRoom(joinRequest);

            Assert.AreEqual(joinResponse.Status.IsSuccess, true);

            // Check to see the room is not visible.
            OpenLobbiesResponse openLobbiesResponseAfterJoin = client.GetOpenLobbies(new OpenLobbiesRequest());

            Assert.AreEqual(openLobbiesResponseAfterJoin.Status.IsSuccess, true);
            Assert.AreEqual(0, openLobbiesResponseAfterJoin.Rooms.Count);

            // Check to see the player can see the game because they are a member.
            PlayerCurrentGamesResponse playerGamesResponse = client.GetPlayerCurrentGames(new PlayerCurrentGamesRequest());

            Assert.AreEqual(playerGamesResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, playerGamesResponse.Games.Count);

            SuperUser superUser = authHelper.CreateSuperUser();

            client.Login(new AuthorizationRequest()
            {
                Password = superUser.password,
                Username = superUser.userModel.UserModel.Username,
            });

            PlayerCurrentGamesResponse adminGamesResponse = client.GetPlayerCurrentGames(new PlayerCurrentGamesRequest());

            Assert.AreEqual(adminGamesResponse.Status.IsSuccess, true);
            Assert.AreEqual(1, adminGamesResponse.Games.Count);
        }
예제 #23
0
 private void Start()
 {
     transform.Find("RoomList/CloseButton").GetComponent <Button>().onClick.AddListener(OncloseBtnClick);
     transform.Find("RoomList/CreateRoomButton").GetComponent <Button>().onClick.AddListener(OnCreateRoomBtnClick);
     transform.Find("RoomList/RefreshButton").GetComponent <Button>().onClick.AddListener(OnRefreshBtnClick);
     roomLayout        = transform.Find("RoomList/ScrollRect/Layout").GetComponent <VerticalLayoutGroup>();
     roomItemPrefab    = Resources.Load("UIPanel/Room") as GameObject;
     listRoomRequest   = GetComponent <ListRoomRequest>();
     createRoomRequest = GetComponent <CreateRoomRequest>();
     joinRoomRequest   = GetComponent <JoinRoomRequest>();
 }
예제 #24
0
파일: RoomHub.cs 프로젝트: m1c1b/pokeR
        public async Task UpdateUser(JoinRoomRequest updated)
        {
            var userQuery = db.Users.Where(u => u.ConnectionId == Context.ConnectionId);
            var user      = await userQuery.FirstOrDefaultAsync();

            user.DisplayName = updated.Name;
            user.EmblemId    = updated.EmblemId;
            await db.SaveChangesAsync();

            var roomId = user?.RoomId;
            await Clients.Group(roomId).SendAsync("UserUpdated", new ListChange <User>(user, await GetRoomUsers(roomId)));
        }
        public async ValueTask ExecuteAsync(JoinRoomCommand command)
        {
            var request = new JoinRoomRequest
            {
                SessionId = command.SessionId,
                Room      = command.Room
            };

            await m_MessageQueueService.RequestAsync(
                "room.join",
                request.ToByteArray()).ConfigureAwait(false);
        }
 void Start()
 {
     //初始化组件
     _listRoomRequest = this.GetComponent <ListRoomRequest>();
     _joinRoomRequest = this.GetComponent <JoinRoomRequest>();
     _canvasGroup     = this.GetComponent <CanvasGroup>();
     _layout          = this.transform.Find("Img_RoomListBG/Img_List/Emt_Layout");
     //按钮注册监听点击事件
     closeBtn.onClick.AddListener(delegate() { CloseButtonClicked(); });
     creatRoomBtn.onClick.AddListener(delegate() { CreatRoomButtonClicked(); });
     reflashRoomListBtn.onClick.AddListener(delegate() { ReFlashRoomListButtonClicked(); });
 }
예제 #27
0
        public IActionResult JoinRoom()
        {
            var             RoomId          = HttpContext.Request.Query["room_id"].ToString();
            var             UserId          = HttpContext.Request.Query["user_id"].ToString();
            var             Email           = HttpContext.Request.Query["email"].ToString();
            var             FullName        = HttpContext.Request.Query["fullname"].ToString();
            var             Mssv            = HttpContext.Request.Query["mssv"].ToString();
            JoinRoomRequest joinRoomRequest = null;

            if (RoomId.Equals(""))
            {
                Response.StatusCode = 401;
                return(Ok(new ApiResultErrors <string>()
                {
                    Message = "Vào phòng thất bại!"
                }));
            }
            else if (!UserId.Equals(""))
            {
                joinRoomRequest = new JoinRoomRequest()
                {
                    RoomId = int.Parse(RoomId),
                    UserId = int.Parse(UserId),
                };
            }
            else
            {
                joinRoomRequest = new JoinRoomRequest()
                {
                    RoomId   = int.Parse(RoomId),
                    Mssv     = Mssv,
                    Email    = Email,
                    FullName = FullName
                };
            }

            var data = _roomService.JoinRoom(joinRoomRequest);

            if (data == null)
            {
                Response.StatusCode = 401;
                return(Ok(new ApiResultErrors <string>()
                {
                    Message = "Vào phòng thất bại!"
                }));
            }
            else
            {
                return(new JsonResult(data));
            }
        }
예제 #28
0
        /**
         * Join a room with it's identifier.
         * If the room does not exist create it
         * otherwise join.
         */
        public async Task <JoinRoomResponse> JoinRoom(JoinRoomRequest payload)
        {
            try
            {
                var response = new JoinRoomResponse();

                User user = await _userRepository.FindRoomOfUserById((Guid)payload.userIdentifier);

                if (user == null)
                {
                    throw new ApplicationError("[RoomService.JoinRoom]", 1);
                }

                var room = await _roomRepository.FindByIdentifier((Guid)payload.roomIdentifier);

                if (room == null)
                {
                    room            = new Room();
                    room.id         = Guid.NewGuid();
                    room.identifier = (Guid)payload.roomIdentifier;
                    room.users      = new List <User> {
                        user
                    };

                    bool result = await _roomRepository.Save(room);

                    if (!result)
                    {
                        throw new ApplicationError("[RoomService.JoinRoom]", 3);
                    }
                }
                else
                {
                    room.users = await _userRepository.FindAllByRoomId(room.id);

                    room.users.Add(user);
                }

                response.roomIdentifier = room.identifier;
                response.users          = room.users;
                response.messages       = await _messageRepository.FindAllByRoomId(room.id);

                await _unitOfWork.Save();

                return(response);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #29
0
        public void JoinRoom(string room)
        {
            var content = new JoinRoomRequest()
            {
                UID = room
            };

            Emit("join-room", content);
            socket.On("room-joined", (data) =>
            {
                isConnected = true;
                Console.WriteLine("Joined room on the server: " + data.ToString());
            });
        }
예제 #30
0
 void Start()
 {
     roomItemPrefab = Resources.Load("UIPanel/RoomItem") as GameObject;
     battleRes      = transform.Find("BattleRes").GetComponent <RectTransform>();
     roomList       = transform.Find("RoomList").GetComponent <RectTransform>();
     transform.Find("RoomList/CloseButton").GetComponent <Button>().onClick.AddListener(OnCloseClick);
     roomLayout = transform.Find("RoomList/ScrollRect/Layout").GetComponent <VerticalLayoutGroup>();
     transform.Find("RoomList/CreateRoomButton").GetComponent <Button>().onClick.AddListener(OnCreateRoomClick);
     transform.Find("RoomList/RefreshButton").GetComponent <Button>().onClick.AddListener(OnRefreshClick);
     listRoomRequest = GetComponent <ListRoomRequest>();
     crRequest       = GetComponent <CreateRoomRequest>();
     joinRoomRequest = GetComponent <JoinRoomRequest>();
     EnterAnim();
 }
예제 #31
0
        public void JoinRoom()
        {
            _form.tabRooms.SelectedTab = this;

            JoinRoomRequest j = new JoinRoomRequest(_occupant);
            _sm.SendAndForget(j);
        }
예제 #32
0
	private void OnLogin(BaseEvent evt) {
		User user = (Sfs2X.Entities.User)evt.Params["user"];
		
		trace("Login successful");
		trace("Username is: " + user.Name);
		// Now we want to send z_l to the server
		SFSObject sfsObj = new SFSObject();
		// Set our current version
		sfsObj.PutUtfString("V","3D1");
		sfsObj.PutInt("ID",Convert.ToInt32(user.Name)); 
		// Get the login info for this user
		this.sendMessage("l",sfsObj);
		// Enable lag monitor
		JoinRoomRequest jr = new JoinRoomRequest("lobby");
		this.sfs.Send(jr);
	
	}