public void SystemClientDisConnected(SFNETPacket packet) { var user = UserManagerRef.GetUser(packet.SessionID()); if (user == null) { return; } if (user.LobbyID > 0) { var jsonData = new JsonPacketRequestLeaveLobby() { LobbyID = user.LobbyID, UserID = user.UserID }; var bodyData = JsonEnDecode.Encode <JsonPacketRequestLeaveLobby>(jsonData); var InnerPacket = new CgsfNET64Lib.SFNETPacket(); InnerPacket.SetData(-1, (ushort)PACKET_ID.REQUEST_LEAVE_LOBBY, bodyData); RelayPacketPacketProcess.RelayPacket(user.LobbyID, InnerPacket); } var result = UserManagerRef.RemoveUser(packet.SessionID()); InnerMessageQueue.CurrentUserCount(UserManagerRef.GetConnectCount()); DevLog.Write(string.Format("Client DisConnected. SessionID: {0}", packet.SessionID()), LOG_LEVEL.INFO); }
// 로비 입장/나가기 private void btnLobbyEnterLeave_Click(object sender, EventArgs e) { if (ClientStatus == CLIENT_STATUS.LOBBY) { var request = new JsonPacketRequestLeaveLobby() { LobbyID = textBoxLobbyID.Text.ToInt16(), UserID = textBoxUserID.Text }; var bodyData = JsonEnDecode.Encode<JsonPacketRequestLeaveLobby>(request); PostSendPacket((UInt16)PACKET_ID.REQUEST_LEAVE_LOBBY, bodyData); return; } if (ClientStatus == CLIENT_STATUS.LOGIN) { var request = new JsonPacketRequestEnterLobby() { LobbyID = textBoxLobbyID.Text.ToInt16(), UserID = textBoxUserID.Text }; var bodyData = JsonEnDecode.Encode<JsonPacketRequestEnterLobby>(request); PostSendPacket((UInt16)PACKET_ID.REQUEST_ENTER_LOBBY, bodyData); } else { MessageBox.Show("로그인 상태가 아니거나 이미 로비에 입장한 상태입니다"); } }