Ejemplo n.º 1
0
 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 { }
     }
 }
Ejemplo n.º 2
0
        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());
            }
        }