Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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); }
     }
 }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
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 { }
     }
 }
Esempio n. 8
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());
            }
        }
Esempio n. 9
0
        public int GetHeroID(CNameObjDict co)
        {
            CMixArray c = (CMixArray)co["ret"];

            return(c.Int(1));
        }
Esempio n. 10
0
 public void ParseUser(CNameObjDict co)
 {
     g.OutPut(co.ToString());
 }