public override bool ParseStream(NetworkStream ns) { try { if (!ns.DataAvailable) { return(false); } int len = (ns.ReadByte() << 24) + (ns.ReadByte() << 16) + (ns.ReadByte() << 8) + ns.ReadByte(); byte[] data = new byte[len]; byte[] head = new byte[4]; ns.Read(head, 0, 4); ns.Read(data, 0, len); MyAuxiliary.OutPut(Inspector.Inspect(data)); if (data[0] == 10 && data[1] == 11 && data[2] == 1 && data[3] == 7) { CNameObjDict co = ((CNameObjDict)CAmf3Helper.GetObject(data)); MyAuxiliary.OutPut(co.ToString()); ParseData(co); } else { return(true); } } catch (Exception e) { Console.WriteLine(e.ToString()); } return(true); }
override public void ParseSendData() { lock (SendData) { if (SendData.Length - SendDataIndex < 4) { return; } SendData.Seek(SendDataIndex, SeekOrigin.Begin); int length = (SendData.ReadByte() << 24) + (SendData.ReadByte() << 16) + (SendData.ReadByte() << 8) + SendData.ReadByte(); if (length + 8 > SendData.Length - SendDataIndex) { return; } byte[] data = new byte[length]; byte[] header = new byte[24]; SendData.Seek(SendDataIndex, SeekOrigin.Begin); SendData.Read(header, 0, 24); SendData.Read(data, 0, length); SendDataIndex = SendData.Position; if (SendData.Length == SendDataIndex) { SendData = new MemoryStream(); SendDataIndex = 0; } try { CNameObjDict co = ParseAMF3(data); OutPut("\r\nSendData:\r\n" + co.ToString()); } catch (Exception e) { OutPut("send err:" + e.Message); } } }
public void ParseUsers(CNameObjDict co) { CNameObjDict c = (CNameObjDict)((CMixArray)co["ret"])[0]; string uid = c["uid"].ToString(); string utid = c["utid"].ToString(); string uname = c["uname"].ToString(); g.config.uid = uid; }
public void parseFormation(CNameObjDict co) { CMixArray cm = (CMixArray)co["ret"]; Dictionary <string, object> formation = new Dictionary <string, object>(); for (int i = 0; i < 6; i++) { formation[i.ToString()] = cm[i]; } config.formation = formation; }
public bool CheckUser(CNameObjDict co) { CMixArray c = (CMixArray)co["ret"]; if (c.FixedLength > 0) { return(true); // the server has role } else { return(false); //don't have role } }
public CNameObjDict ParseAMF3(byte[] data) { CNameObjDict co = null; try { co = ((CNameObjDict)CAmf3Helper.GetObject(data)); } catch (Exception e) { MessageBox.Show(e.Message); return(null); } return(co); }
override public void ParseReceiveData() { lock (ReceiveData) { if (ReceiveData.Length - ReceiveIndex < 4) { return; } ReceiveData.Seek(ReceiveIndex, SeekOrigin.Begin); int length = (ReceiveData.ReadByte() << 24) + (ReceiveData.ReadByte() << 16) + (ReceiveData.ReadByte() << 8) + ReceiveData.ReadByte(); if (length + 8 > ReceiveData.Length - ReceiveIndex) { return; } byte[] data = new byte[length]; byte[] header = new byte[8]; ReceiveData.Seek(ReceiveIndex, SeekOrigin.Begin); ReceiveData.Read(header, 0, 8); ReceiveData.Read(data, 0, length); ReceiveIndex = ReceiveData.Position; if (ReceiveData.Length == ReceiveIndex) { ReceiveData = new MemoryStream(); ReceiveIndex = 0; } try { CNameObjDict co = ParseAMF3(data); if (co.ContainsKey("callback")) { if (((CNameObjDict)co["callback"])["callbackName"].ToString() == "re.chat.getMsg") { return; } } OutPut("\r\nReceiveData:\r\n" + co.ToString()); } catch { } } }
public void ParseData(CNameObjDict data) { try { CNameObjDict co = data; if (data.ContainsKey("err")) { co = (CNameObjDict)data["callback"]; if (co["callbackName"].ToString().Equals("re.chat.getMsg")) { return; } else if (co["callbackName"].ToString().Equals("re.bag.bagInfo")) { //g.startBattle(); return; //return; } else if (co["callbackName"].ToString().Equals("push.mineral.rob")) { return; } else { //Console.ReadLine(); return; } } ((Game)MyAuxiliary).config.token = data["token"].ToString(); ((Game)MyAuxiliary).config.time = data["time"].ToString(); if (data.ContainsKey("ret")) { co = (CNameObjDict)((CMixArray)data["ret"])[0]; } string callback = ((CNameObjDict)co["callback"])["callbackName"].ToString(); switch (callback) { case "user.login": g.getUsers(); break; case "user.getUsers": if (CheckUser(co)) { ParseUsers(co); g.userLogin(); } else { g.createUser(g.RandomName()); } break; case "user.userLogin": g.getUser(); break; case "user.getUser": ParseUser(co); g.getSwitchInfo(); break; case "user.createUser": g.getUsers(); break; case "re.chat.getMsg": break; case "user.getSwitchInfo": g.getRewardList(); break; case "reward.getRewardList": g.bagInfo(); break; case "bag.bagInfo": g.getActivityConf(); //g.getFormation(); break; /* * there are many activies here ,but if the client can keep online ,it's ok. */ case "activity.getActivityConf": //let's do battle g.getFormation(); break; case "IFormation.getFormation": g.parseFormation(co); if (g.config.battleFlag < 4) { g.enter1stBaseLevel(); } else if (g.config.battleFlag < 8) { g.enter2ndBaseLevel(); } //g.SetHerorID(GetHeroID(co)); break; case "ncopy.enterBaseLevel": //g.doBattle(); // System.Threading.Thread.Sleep(5000); g.startBattle(); break; case "ncopy.doBattle": if (g.config.battleFlag != 4 && g.config.battleFlag != 8) { g.startBattle(); } else { g.leaveBaseLevel(); } break; case "ncopy.leaveBaseLevel": g.getFormation(); break; default: //user.getSwitchInfo break; } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
public int GetHeroID(CNameObjDict co) { CMixArray c = (CMixArray)co["ret"]; return(c.Int(1)); }
public void ParseUser(CNameObjDict co) { g.OutPut(co.ToString()); }