private void Signoff() { var mh_logoff = new MH_Logoff(this); mh_logoff.Write(); }
private void HandleMessage(ClientMessage msg) { switch (msg.eventType) { case MessageTypes.ALTLOGONREPLY: var altreset = new MH_Logon(this); var altrec = altreset.Record; #if OFFLINE break; #endif var rec = reset.Record; Debug.WriteLine("AltLogonReply."); if (altrec.puidCRC != rec.puidCRC && altrec.puidCtr != rec.puidCtr) { Debug.WriteLine("Server changed our puid data. Reconnecting."); Signoff(); } break; case MessageTypes.PING: Debug.WriteLine("Ping."); var msg_pingpong = new MH_PingPong(this, msg); msg_pingpong.Write(); Debug.WriteLine("Pong."); break; case MessageTypes.USERSTATUS: var msg_ustatus = new MH_UserStatus(this, msg); break; case MessageTypes.USERMOVE: var msg_umove = new MH_UserMove(this, msg); break; case MessageTypes.USERPROP: var msg_uprop = new MH_UserProp(this, msg); break; case MessageTypes.USERLOG: var msg_ulog = new MH_UserLog(this, msg); break; case MessageTypes.USERLIST: var msg_ulist = new MH_UserList(this, msg); break; case MessageTypes.USEREXIT: var msg_uexit = new MH_UserExit(this, msg); break; case MessageTypes.USERNEW: var msg_unew = new MH_UserNew(this, msg); break; case MessageTypes.LOGOFF: var msg_logoff = new MH_Logoff(this, msg); break; case MessageTypes.TALK: var msg_talk = new MH_Talk(this); Debug.WriteLine("(fromuser {1}) msg: `{0}`", msg_talk.Text, msg.refNum); break; case MessageTypes.XTALK: var msg_xtalk = new MH_XTalk(this, msg); Debug.WriteLine("(fromuser {1}) msg: `{0}`", msg_xtalk.Text, msg.refNum); #if CLEVER if (Identity.ID != msg.refNum) { var newxtalk = new MH_XTalk(this, clever.Think(msg_xtalk.Text)); newxtalk.Write(); } #endif break; case MessageTypes.WHISPER: var msg_whisp = new MH_Whisper(this, msg); Debug.WriteLine("(fromuser {1}) msg: `{0}`", msg_whisp.Text, msg_whisp.Target.ID); //if (msg_whisp.Target.ID != Identity.ID) //{ // var msg_whisp_out = new MH_Whisper(this, msg_whisp.Target, new string(msg_whisp.Text.Reverse().ToArray())); // msg_whisp_out.Write(); //} break; case MessageTypes.XWHISPER: var msg_xwhisp = new MH_XWhisper(this, msg); Debug.WriteLine("(fromuser {1}) msg: `{0}`", msg_xwhisp.Text, msg_xwhisp.Target.ID); #if CLEVER if (msg_xwhisp.Target.ID != Identity.ID) { //var msg_xwhisp_out = new MH_XWhisper(this, msg_xwhisp.Target, clever.Think(msg_xwhisp.Text)); var msg_xwhisp_out = new MH_XWhisper(this, msg_xwhisp.Target, new string(msg_xwhisp.Text.Reverse().ToArray())); msg_xwhisp_out.Write(); } #endif break; case MessageTypes.ROOMDESC: var msg_roomdesc = new MH_RoomDesc(this, msg); break; case MessageTypes.ROOMDESCEND: break; case MessageTypes.ASSETSEND: var msg_assetsend = new MH_AssetSend(this, msg); break; case MessageTypes.VERSION: var mh_sv = new MH_ServerVersion(this, msg); break; case MessageTypes.SERVERINFO: var msg_svinfo = new MH_ServerInfo(this, msg); break; case MessageTypes.HTTPSERVER: var msg_httpsv = new MH_HTTPServer(this); break; case MessageTypes.BLOWTHRU: var msg_blowthru = new MH_Blowthru(this, msg); #if OFFLINE blowthrus.Add(msg_blowthru.Payload); #endif break; default: //for (int i = 0; i < 500; i++) // new MH_XWhisper(this, Palace.GetUserByID(msg.refNum), "hi").Write(); Debug.WriteLine("Unknown EvT: {0} (0x{1:X8})", msg.eventType, (uint)msg.eventType); Reader.ReadBytes(msg.length); break; } }