Ejemplo n.º 1
0
        public bool Serialize(RoomListData data)
        {
            bool ret = true;

            for (int roomIndex = 0; roomIndex < WaitingUIManager.maxRoomNum; roomIndex++)
            {
                ret &= Serialize((byte)Encoding.Unicode.GetBytes(data.Rooms[roomIndex].RoomName).Length);
                ret &= Serialize(data.Rooms[roomIndex].RoomName);
                ret &= Serialize((byte)data.Rooms[roomIndex].DungeonId);
                ret &= Serialize((byte)data.Rooms[roomIndex].DungeonLevel);
                ret &= Serialize((byte)data.Rooms[roomIndex].PlayerNum);
                ret &= Serialize((byte)data.Rooms[roomIndex].State);

                for (int userIndex = 0; userIndex < WaitingUIManager.maxPlayerNum; userIndex++)
                {
                    ret &= Serialize((byte)Encoding.Unicode.GetBytes(data.Rooms[roomIndex].RoomUserData[userIndex].UserName).Length);
                    ret &= Serialize(data.Rooms[roomIndex].RoomUserData[userIndex].UserName);
                    ret &= Serialize((byte)data.Rooms[roomIndex].RoomUserData[userIndex].UserGender);
                    ret &= Serialize((byte)data.Rooms[roomIndex].RoomUserData[userIndex].UserClass);
                    ret &= Serialize((byte)data.Rooms[roomIndex].RoomUserData[userIndex].UserLevel);
                }
            }

            return(ret);
        }
Ejemplo n.º 2
0
    public RoomListPacket GetRoomList()
    {
        RoomListData roomListData = new RoomListData(room);
        RoomListPacket roomListPacket = new RoomListPacket(roomListData);

        return roomListPacket;
    }
Ejemplo n.º 3
0
        void OnGotRoomList(RoomListData rooms)
        {
            CreateRoomListItems(rooms);

            fetchRoomListLoading.SetActive(false);
            refreshButton.interactable = true;
        }
Ejemplo n.º 4
0
 private async void Client_RoomListUpdate(RoomListData data)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
                               () =>
     {
         listRooms(data.RoomNames);
     });
 }
Ejemplo n.º 5
0
    //Server - 방 목록 수신
    public void RoomList(DataPacket packet)
    {
        Debug.Log("방 목록 수신");
        RoomListPacket roomListPacket = new RoomListPacket(packet.msg);
        RoomListData   roomListData   = roomListPacket.GetData();

        uiManager.WaitUIManager.SetRoom(roomListData);
    }
Ejemplo n.º 6
0
        public bool Deserialize(ref RoomListData element)
        {
            if (GetDataSize() == 0)
            {
                // 데이터가 설정되지 않았다.
                return(false);
            }

            bool ret = true;

            byte   roomNameLength = 0;
            string roomName;
            byte   dungeonId      = 0;
            byte   dungeonLevel   = 0;
            byte   playerNum      = 0;
            byte   state          = 0;
            byte   userNameLength = 0;
            string userName;
            byte   userGender = 0;
            byte   userClass  = 0;
            byte   userLevel  = 0;

            Room[]         rooms;
            RoomUserData[] roomUserData;

            rooms        = new Room[WaitingUIManager.maxRoomNum];
            roomUserData = new RoomUserData[WaitingUIManager.maxPlayerNum];

            for (int roomIndex = 0; roomIndex < WaitingUIManager.maxRoomNum; roomIndex++)
            {
                ret &= Deserialize(ref roomNameLength);
                ret &= Deserialize(out roomName, roomNameLength);
                ret &= Deserialize(ref dungeonId);
                ret &= Deserialize(ref dungeonLevel);
                ret &= Deserialize(ref playerNum);
                ret &= Deserialize(ref state);

                for (int userIndex = 0; userIndex < WaitingUIManager.maxPlayerNum; userIndex++)
                {
                    ret &= Deserialize(ref userNameLength);
                    ret &= Deserialize(out userName, userNameLength);
                    ret &= Deserialize(ref userGender);
                    ret &= Deserialize(ref userClass);
                    ret &= Deserialize(ref userLevel);

                    roomUserData[userIndex] = new RoomUserData(userName, userGender, userClass, userLevel);
                }

                rooms[roomIndex] = new Room(roomName, dungeonId, dungeonLevel, roomUserData, playerNum, state);
            }

            element = new RoomListData(rooms);

            return(ret);
        }
Ejemplo n.º 7
0
        void CreateRoomListItems(RoomListData rooms)
        {
            RoomListItem[] roomListItems = roomList.GetComponentsInChildren <RoomListItem>();

            if (roomListItems != null)
            {
                for (int i = 0; i < roomListItems.Length; i++)
                {
                    bool remain = false;

                    for (int j = 0; j < rooms.rooms.Length; j++)
                    {
                        if (roomListItems[i].room.roomID == rooms.rooms[j].roomID)
                        {
                            remain = true;
                            break;
                        }
                    }

                    if (!remain)
                    {
                        GameObject.Destroy(roomListItems[i].gameObject);
                    }
                }
            }

            roomListItems = roomList.GetComponentsInChildren <RoomListItem>();

            for (int i = 0; i < rooms.rooms.Length; i++)
            {
                RoomListItem roomListItem = null;

                if (roomListItems != null)
                {
                    for (int j = 0; j < roomListItems.Length; j++)
                    {
                        if (roomListItems[j].room.roomID == rooms.rooms[i].roomID)
                        {
                            roomListItem = roomListItems[j];
                            break;
                        }
                    }
                }

                if (roomListItem == null)
                {
                    roomListItem = Instantiate(roomListItemPrefab) as RoomListItem;
                    roomListItem.transform.SetParent(roomList, false);
                }

                roomListItem.SetRoom(rooms.rooms[i]);
            }
        }
Ejemplo n.º 8
0
        private void GetRoomList(ISession session)
        {
            List <RoomData> list = new List <RoomData>();

            for (int i = 0; i < m_listRoom.Count; i++)
            {
                list.Add(m_listRoom[i].data);
            }
            RoomListData data = new RoomListData();

            data.rooms = list;
            m_net.Return(data);
        }
Ejemplo n.º 9
0
 private void OnGetRoomList(RoomListData data)
 {
     if (data != null)
     {
         m_listRoom = data.rooms;
         for (int i = 0; i < m_listRoom.Count; i++)
         {
             Debuger.LogWarning(m_listRoom[i].ToString());
         }
     }
     else
     {
         Debuger.LogWarning("房间列表为空!");
     }
 }
Ejemplo n.º 10
0
    //Server - 방 목록 수신
    public void RoomList(DataPacket packet)
    {
        Debug.Log("방 목록 수신");
        RoomListPacket roomListPacket = new RoomListPacket(packet.msg);
        RoomListData   roomListData   = roomListPacket.GetData();

        UIManager.Instance.WaitingUIManager.SetRoomListData(roomListData);

        if (SceneChanger.Instance.CurrentScene == SceneChanger.SceneName.LoadingScene)
        {
            SceneChanger.Instance.LoadingCheck[0] = true;
        }
        else if (SceneChanger.Instance.CurrentScene == SceneChanger.SceneName.WaitingScene)
        {
            UIManager.Instance.WaitingUIManager.SetRoom();
        }
    }
Ejemplo n.º 11
0
        private void OnUpdateRoomList(RoomListData data)
        {
            if (data != null || data.rooms.Count == 0)
            {
                m_listRoom = data.rooms;
                for (int i = 0; i < m_listRoom.Count; i++)
                {
                    Debuger.Log(m_listRoom[i].ToString());
                }

                onUpdateRoomList.Invoke(m_listRoom);
            }
            else
            {
                m_listRoom = new List <RoomData>();
                Debuger.LogWarning("房间列表为空!");
            }
        }
Ejemplo n.º 12
0
    //Server - 방 목록 수신
    public void RoomList(DataPacket packet)
    {
        Debug.Log("방 목록 수신");
        RoomListPacket roomListPacket = new RoomListPacket(packet.msg);
        RoomListData   roomListData   = roomListPacket.GetData();

        uiManager.WaitingUIManager.SetRoomListData(roomListData);

        for (int i = 0; i < WaitingUIManager.maxRoomNum; i++)
        {
            Debug.Log(roomListData.Rooms[i].RoomName);
            Debug.Log(roomListData.Rooms[i].PlayerNum);
        }

        if (SceneChanger.Instance.CurrentScene == SceneChanger.SceneName.LoadingScene)
        {
            SceneChanger.Instance.LoadingCheck[0] = true;
        }
    }
Ejemplo n.º 13
0
        public bool Deserialize(ref RoomListData element)
        {
            if (GetDataSize() == 0)
            {
                // 데이터가 설정되지 않았다.
                return(false);
            }

            bool ret = true;

            byte   roomNameLength = 0;
            string roomName;
            byte   dungeonId    = 0;
            byte   dungeonLevel = 0;

            byte[]   userNameLength = new byte[WaitUIManager.maxPlayerNum];
            string[] userName       = new string[WaitUIManager.maxPlayerNum];
            byte[]   userGender     = new byte[WaitUIManager.maxPlayerNum];
            byte[]   userClass      = new byte[WaitUIManager.maxPlayerNum];
            byte[]   userLevel      = new byte[WaitUIManager.maxPlayerNum];

            for (int i = 0; i < WaitUIManager.maxRoomNum; i++)
            {
                ret &= Deserialize(ref roomNameLength);
                ret &= Deserialize(out roomName, roomNameLength);
                ret &= Deserialize(ref dungeonId);
                ret &= Deserialize(ref dungeonLevel);

                for (int j = 0; j < WaitUIManager.maxPlayerNum; j++)
                {
                    ret &= Deserialize(ref userNameLength[j]);
                    ret &= Deserialize(out userName[j], userNameLength[j]);
                    ret &= Deserialize(ref userGender[j]);
                    ret &= Deserialize(ref userClass[j]);
                    ret &= Deserialize(ref userLevel[j]);
                }

                element.Rooms[i] = new Room(roomName, dungeonId, dungeonLevel, userName, userGender, userClass, userLevel);
            }

            return(ret);
        }
Ejemplo n.º 14
0
        public bool Serialize(RoomListData data)
        {
            bool ret = true;

            for (int i = 0; i < WaitUIManager.maxRoomNum; i++)
            {
                ret &= Serialize((byte)Encoding.Unicode.GetBytes(data.Rooms[i].RoomName).Length);
                ret &= Serialize(data.Rooms[i].RoomName);
                ret &= Serialize(data.Rooms[i].DungeonId);
                ret &= Serialize(data.Rooms[i].DungeonLevel);

                for (int j = 0; j < WaitUIManager.maxPlayerNum; j++)
                {
                    ret &= Serialize((byte)Encoding.Unicode.GetBytes(data.Rooms[i].UserName[j]).Length);
                    ret &= Serialize(data.Rooms[i].UserName[j]);
                    ret &= Serialize((byte)data.Rooms[i].UserGender[j]);
                    ret &= Serialize(data.Rooms[i].UserClass[j]);
                    ret &= Serialize(data.Rooms[i].UserLevel[j]);
                }
            }

            return(ret);
        }
Ejemplo n.º 15
0
 public void SetRoom(RoomListData roomListData)
 {
     rooms = roomListData.Rooms;
 }
    protected override void HandleMessage(TypedPackage message)
    {
        Debug.Log(string.Format("Msg: {0} of length {1}.", message.Type, message.Data.Length));

        if (message.Type == PackageType.LoginSucceed)
        {
            try
            {
                LoginSucceedData data = new LoginSucceedData(message.Data, ref message.Offset);
                _playerID = data.PlayerID;
                _udpConnectionKey = data.UdpConnectKey;
                OnLogedIn();
            }
            catch (Exception e)
            {
                Debug.Log("Failed to parse: " + e.ToString());
            }

            BeginUdpRegister();
        }
        else if (message.Type == PackageType.LoginFailed)
        {
            OnLoginFailed();
        }
        else if (message.Type == PackageType.RoomCreated)
        {
            OnCreatedRoom();
        }
        else if (message.Type == PackageType.JoinedRoom)
        {
            JoinedRoomInfoData data;
            try
            {
                data = new JoinedRoomInfoData(message.Data, ref message.Offset);
                ConnectedRoom = data.Room;
                OnJoinedRoom();
            }
            catch (Exception e)
            {
                Debug.Log("Failed to parse data: " + e.Message + " | " + e.TargetSite + " | " + e.StackTrace);
            }
        }
        else if (message.Type == PackageType.RoomList)
        {
            RoomListData data = new RoomListData(message.Data, ref message.Offset);
            OpenRooms = data.Rooms;
            OnReceivedRooms();
        }
        else if (message.Type == PackageType.OtherJoinedRoom)
        {
            RoomPlayerInfo playerInfo = new RoomPlayerData(message.Data, ref message.Offset).Player;
            ConnectedRoom.Players.Add(playerInfo);
            OnOtherJoinedRoom(playerInfo);
        }
        else if (message.Type == PackageType.OtherLeftRoom)
        {
            PlayerIDData playerInfo = new PlayerIDData(message.Data, ref message.Offset);
            RoomPlayerInfo player = null;
            for (int i = ConnectedRoom.Players.Count - 1; i >= 0; i--)
            {
                if (ConnectedRoom.Players[i].PlayerID == playerInfo.PlayerID)
                {
                    player = ConnectedRoom.Players[i];
                    ConnectedRoom.Players.RemoveAt(i);
                    break;
                }
            }

            if (player != null) OnOtherLeftRoom(player);
            else Debug.Log("Could not find player to remove");
        }
        else if (message.Type == PackageType.OtherChangedSetup)
        {
            // Parse
            OtherPlayerSetupData info = new OtherPlayerSetupData(message.Data, ref message.Offset);

            // Find player of id
            RoomPlayerInfo foundPlayer = null;
            foreach (RoomPlayerInfo player in ConnectedRoom.Players)
            {
                if (player.PlayerID == info.PlayerID)
                {
                    foundPlayer = player;
                    break;
                }
            }

            // Change setup of player
            if (foundPlayer != null)
            {
                foundPlayer.Setup = info.Setup;
                OnOtherChangedSetup();
            }
            else
            {
                Debug.Log("Could not find player to remove");
            }
        }
        else if (message.Type == PackageType.UDPRegistered)
        {
            _udpRegistered = true;
        }
        else if (message.Type == PackageType.RoomLoad)
        {
            RoomUdpSetupData msg = new RoomUdpSetupData(message.Data, ref message.Offset);

            // Assign udp settings
            foreach (PlayerUdpSetupData playerUDP in msg.UdpPlayerList)
            {
                foreach (RoomPlayerInfo player in ConnectedRoom.Players)
                {
                    if (player.PlayerID == playerUDP.PlayerID)
                    {
                        player.UdpEP = playerUDP.EP;
                        break;
                    }
                }
            }

            OnGameLoad();
        }
        else if (message.Type == PackageType.RoomStart)
        {
            OnGameStart();
        }
        else
        {
            base.HandleMessage(message);
        }
    }