Пример #1
0
    //방 입장 -> Server
    public void EnterRoom(int roomNum)
    {
        Debug.Log("방 입장 : " + roomNum);

        EnterRoomData   enterRoomData   = new EnterRoomData(roomNum);
        EnterRoomPacket enterRoomPacket = new EnterRoomPacket(enterRoomData);

        enterRoomPacket.SetPacketId((int)ClientPacketId.EnterRoom);

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

        sendMsgs.Enqueue(packet);
    }
Пример #2
0
    //방 입장
    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);
            }
        }
    }