public bool Serialize(RoomNumberData data)
        {
            bool ret = true;

            ret &= Serialize(data.RoomNum);

            return(ret);
        }
示例#2
0
    //방 유저 정보 요청 -> Server
    public void RequestRoomUserData(int roomNum)
    {
        Debug.Log("방 유저 정보 요청");

        RoomNumberData   roomNumberData   = new RoomNumberData(roomNum);
        RoomNumberPacket roomNumberPacket = new RoomNumberPacket(roomNumberData);

        roomNumberPacket.SetPacketId((int)ClientPacketId.RequestRoomUserData);

        DataPacket packet = new DataPacket(CreatePacket(roomNumberPacket), null);

        sendMsgs.Enqueue(packet);
    }
示例#3
0
    //Server - 방 생성 결과 수신
    public void CreateRoomNumber(DataPacket packet)
    {
        Debug.Log("방 생성 결과 수신");
        RoomNumberPacket resultPacket = new RoomNumberPacket(packet.msg);
        RoomNumberData   resultData   = resultPacket.GetData();

        if (resultData.RoomNum < 0)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "방 생성 실패"));
        }
        else if (resultData.RoomNum <= WaitingUIManager.maxRoomNum)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "방 생성 성공"));
            uiManager.WaitingUIManager.CreateRoom(resultData.RoomNum);
        }
    }
示例#4
0
    //Server - 방 퇴장 결과 수신
    public void ExitRoomNumber(DataPacket packet)
    {
        Debug.Log("방 퇴장 결과 수신");
        RoomNumberPacket roomNumberPacket = new RoomNumberPacket(packet.msg);
        RoomNumberData   roomNumberData   = roomNumberPacket.GetData();

        Debug.Log(roomNumberData.RoomNum);

        if (roomNumberData.RoomNum == (int)Result.Fail)
        {
        }
        else if (roomNumberData.RoomNum == (int)Result.Success)
        {
            SceneChanger.Instance.SceneChange(SceneChanger.SceneName.WaitingScene, false);
        }
    }
        public bool Deserialize(ref RoomNumberData element)
        {
            if (GetDataSize() == 0)
            {
                // 데이터가 설정되지 않았다.
                return(false);
            }

            bool ret     = true;
            byte roomNum = 0;

            ret &= Deserialize(ref roomNum);

            element = new RoomNumberData(roomNum);

            return(ret);
        }
示例#6
0
    //Server - 방 입장 결과 수신
    public void EnterRoomNumber(DataPacket packet)
    {
        Debug.Log("방 입장 결과 수신");
        RoomNumberPacket roomNumberPacket = new RoomNumberPacket(packet.msg);
        RoomNumberData   roomNumberData   = roomNumberPacket.GetData();

        Debug.Log(roomNumberData.RoomNum);

        if (roomNumberData.RoomNum < 0)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "방 입장 실패"));
        }
        else if (roomNumberData.RoomNum <= WaitingUIManager.maxPlayerNum)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "방 입장 성공"));
            SceneChanger.Instance.SceneChange(SceneChanger.SceneName.RoomScene, false);
        }
    }
    //방 입장
    public void EnterRoom(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "방 입장");
        EnterRoomPacket enterRoomPacket = new EnterRoomPacket(packet.msg);
        EnterRoomData   enterRoomData   = enterRoomPacket.GetData();

        string id = "";

        try
        {
            id = loginUser[packet.client];
        }
        catch
        {
            Console.WriteLine("현재 로그인 되어있지 않은 아이디 입니다.");
            return;
        }

        int characterId = userState[id].characterId;

        if (characterId == -1)
        {
            Console.WriteLine("캐릭터가 선택되지 않았습니다.");
            return;
        }

        int result = -1;

        try
        {
            Console.WriteLine(enterRoomData.RoomNum + "번 방에 " + packet.client.RemoteEndPoint.ToString() + "유저 입장");

            result = roomManager.Room[enterRoomData.RoomNum].AddPlayer(packet.client, database.GetHeroData(id, characterId));

            if (result != -1)
            {
                userState[id].state = enterRoomData.RoomNum;
            }
        }
        catch
        {
            Console.WriteLine("DataHandler::EnterRoom.AddPlayer 에러");
            result = -1;
        }

        if (result == -1)
        {
            return;
        }

        RoomNumberData   resultData   = new RoomNumberData(result);
        RoomNumberPacket resultPacket = new RoomNumberPacket(resultData);

        resultPacket.SetPacketId((int)ServerPacketId.EnterRoomNumber);

        byte[] msg = CreatePacket(resultPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }

        for (int playerIndex = 0; playerIndex < RoomManager.maxPlayerNum; playerIndex++)
        {
            if (roomManager.Room[enterRoomData.RoomNum].Socket[playerIndex] != null && playerIndex != result)
            {
                packet = new DataPacket(new byte[0], roomManager.Room[enterRoomData.RoomNum].Socket[playerIndex]);
                RequestRoomUserData(packet);
            }
        }
    }
    //방 생성
    public void CreateRoom(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "방 생성");
        CreateRoomPacket createRoomPacket = new CreateRoomPacket(packet.msg);
        CreateRoomData   createRoomData   = createRoomPacket.GetData();

        string id = "";

        try
        {
            id = loginUser[packet.client];
        }
        catch
        {
            Console.WriteLine("현재 로그인 되어있지 않은 아이디 입니다.");
            return;
        }

        int characterId = userState[id].characterId;

        if (characterId == -1)
        {
            Console.WriteLine("캐릭터가 선택되지 않았습니다.");
            return;
        }

        Console.WriteLine("Id : " + id);
        Console.WriteLine("characterId : " + characterId);
        Console.WriteLine("방 제목 : " + createRoomData.RoomName);

        int result = roomManager.CreateRoom(packet.client, database.GetHeroData(id, characterId), createRoomData);

        Console.WriteLine("방 생성 번호 : " + result);

        RoomNumberData   resultData   = new RoomNumberData(result);
        RoomNumberPacket resultPacket = new RoomNumberPacket(resultData);

        resultPacket.SetPacketId((int)ServerPacketId.CreateRoomNumber);

        byte[] msg = CreatePacket(resultPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }

        List <string> clients = new List <string>(loginUser.Values);

        foreach (string client in clients)
        {
            if (userState.ContainsKey(client))
            {
                if (userState[client].state == -1)
                {
                    packet = new DataPacket(new byte[0], FindSocketWithId(client));

                    RequestRoomList(packet);
                }
            }
        }
    }