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()); } }