// 클라이언트가 방 정보(방이름, 방번호)를 받아 화면에 입,퇴장 메시지 출력 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 + "에 입장했습니다."; } } }
// 채팅방 입,퇴장 관리 (멤버들에게 전달하는 함수를 새로 정의하면 깔끔해지긴 하지만 이해가 어려운건 아니니까. 더 나은 방법이 있다면 수정부탁) 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); } } }