Exemple #1
0
    // 클라이언트가 방 정보(방이름, 방번호)를 받아 화면에 입,퇴장 메시지 출력
    public static void OnMsgReceiveInAndOutAlarm(NetworkMessage netMsg)
    {
        Msg_InAndOutAlarm msg = netMsg.ReadMessage <Msg_InAndOutAlarm>();

        if (msg.clientId < 0)             // 퇴장하는 클라이언트라면
        {
            msg.clientId = -msg.clientId; // 양수로 전환

            // 퇴장하는 클라이언트가 본인이 아니라면
            if (msg.clientId != MyNetManager.instance.m_clientId)
            {
                MyNetManager.instance.m_chatLog.text += "\n" + msg.clientId.ToString() + " 님이 퇴장했습니다.";
            }
            else  // 퇴장하는 클라이언트 본인이라면
            {
                MyNetManager.instance.m_netInfoPanel.text = "방에서 퇴장하였습니다.";  /* 이 부분에 뭘 출력해야하지 ? */
                MyNetManager.instance.m_chatLog.text      = ""; // chatLog 초기화
            }
        }
        else // 입장하는 클라이언트라면
        {
            // 입장하는 클라이언트가 본인이 아니라면
            if (msg.clientId != MyNetManager.instance.m_clientId)
            {
                MyNetManager.instance.m_chatLog.text += "\n" + msg.clientId.ToString() + " 님이 입장했습니다.";
            }
            else  // 입장하는 클라이언트 본인이라면
            {
                MyNetManager.instance.m_netInfoPanel.text = msg.roomNum + "번방 / " + msg.roomName;
                MyNetManager.instance.m_chatLog.text     += "\n" + msg.roomName + "에 입장했습니다.";
            }
        }
    }
Exemple #2
0
    // 채팅방 입,퇴장 관리  (멤버들에게 전달하는 함수를 새로 정의하면 깔끔해지긴 하지만 이해가 어려운건 아니니까. 더 나은 방법이 있다면 수정부탁)
    public static void OnMsgInAndOutChatRoom(NetworkMessage netMsg)
    {
        Msg_InAndOutChatRoom msg = netMsg.ReadMessage <Msg_InAndOutChatRoom>();

        // 해당 방에 접속한 모든 클라이언트에게 접속한 클라이언트를 알린다.
        Msg_InAndOutAlarm msg_room = new Msg_InAndOutAlarm();

        msg_room.roomName = MyNetManager.instance.Chatroom[msg.roomNum].roomName;
        msg_room.roomNum  = msg.roomNum;
        msg_room.clientId = msg.clientId;


        if (msg.clientId < 0)  // Out에 대한 처리 (퇴장하는 클라이언트는 음수)
        {
            // 퇴장한 클라이언트와 같은 방에 접속해있는 클라이언트들에게 알림
            for (int i = 0; i < MyNetManager.instance.Chatroom[msg.roomNum].member.Count; i++)
            {
                NetworkServer.SendToClient(MyNetManager.instance.Chatroom[msg.roomNum].member[i], MyMsgType.InAndOutAlarm, msg_room);
            }

            /* 퇴장하는 클라이언트에게도 전달하기 위해 멤버를 나중에 삭제한다. */
            MyNetManager.instance.Chatroom[msg.roomNum].member.Remove(-msg.clientId); // 채팅방 멤버 삭제
        }
        else  // In에 대한 처리
        {
            MyNetManager.instance.Chatroom[msg.roomNum].member.Add(msg.clientId); // 채팅방 멤버 추가

            // 멤버 추가 후 전달
            for (int i = 0; i < MyNetManager.instance.Chatroom[msg.roomNum].member.Count; i++)
            {
                NetworkServer.SendToClient(MyNetManager.instance.Chatroom[msg.roomNum].member[i], MyMsgType.InAndOutAlarm, msg_room);
            }
        }
    }