Ejemplo n.º 1
0
        private void ProcessMan(MessageMan messagemMan, MainControl control)
        {
            if (messagemMan.BtAryData.Length == 2)
            {
                if (PublicData.PublicData.ManNum != messagemMan.BtAryData[1])
                {
                    AddPeopleInOrOutList addPeople = new AddPeopleInOrOutList();
                    if (PublicData.PublicData.ManNum > messagemMan.BtAryData[1])
                    {
                        PublicData.PublicData.OutNum++;
                        Task.Run(() => {
                            control.Dispatcher.Invoke(() => {
                                control.OutNum.Content = PublicData.PublicData.OutNum.ToInt() + "人";
                            });
                        });
                        PublicData.PublicData.inOrOut.Enqueue(PublicData.InOrOut.Out);
                        addPeople.AddPeopleInOrOut(PublicData.InOrOut.Out);
                    }
                    else
                    {
                        PublicData.PublicData.IntoNum++;
                        Task.Run(() => {
                            control.Dispatcher.Invoke(() => {
                                control.InNum.Content = PublicData.PublicData.IntoNum.ToInt() + "人";
                            });
                        });


                        PublicData.PublicData.inOrOut.Enqueue(PublicData.InOrOut.In);
                        addPeople.AddPeopleInOrOut(PublicData.InOrOut.In);
                    }
                    PublicData.PublicData.ManNum = messagemMan.BtAryData[1];
                }
            }
        }
Ejemplo n.º 2
0
        void Terminate()
        {
            lock (LockObj)
            {
                if (MessageMan != null)
                {
                    MessageMan.Stop();
                    MessageMan = null;
                }
                if (Client != null)
                {
                    if (Client.Connected)
                    {
                        Client.Close();
                        Client.Dispose();
                    }
                    Client = null;
                }
                UserInfo     = null;
                SelfRankInfo = null;
                RankInfos    = null;

                State = StateStatus.None;
            }
        }
Ejemplo n.º 3
0
        public void UploadScore(int point)
        {
            Debug.Assert(IsActive);
            Debug.Assert(UserInfo.Sereal != 0);
            UserScoreParam scoreInfo = new UserScoreParam();

            scoreInfo.Sereal = UserInfo.Sereal;
            scoreInfo.Point  = point;

            MessageMan.SendSystemMessage(MessageCommand.UploadUserScore, scoreInfo);
        }
Ejemplo n.º 4
0
 public void AnalyDataMan(MessageMan messagemMan, MainControl control)
 {
     if (messagemMan.BtPacketType != 0x31)
     {
         return;
     }
     switch (messagemMan.BtCmd)
     {
     case 0x04:
         ProcessMan(messagemMan, control);
         break;
     }
 }
Ejemplo n.º 5
0
        public void RequestScoreRanking(int skip, int take, UserInfo info = null)
        {
            Debug.Assert(IsActive);
            RankingRequest request = new RankingRequest();

            request.Skip = skip;
            request.Take = take;
            if (info != null)
            {
                request.Sereal = info.Sereal;
            }
            MessageMan.SendSystemMessage(MessageCommand.GetScoreRanking, request);
        }
Ejemplo n.º 6
0
        public void DealZT(byte[] btAryReceiveData, MainControl control)
        {
            //数据的长度
            int nCount = btAryReceiveData.Length;

            byte[] btAryBuffer = new byte[nCount + m_nLenth];
            ///Copy(Array, Array, Int64)

            //从第一个元素开始复制 Array 中的一系列元素,
            //将它们粘贴到另一 Array 中(从第一个元素开始)。 长度指定为 64 位整数。
            Array.Copy(m_btAryBuffer, btAryBuffer, m_nLenth);

            //复制 Array 中的一系列元素(从指定的源索引开始),
            //并将它们粘贴到另一 Array 中(从指定的目标索引开始)。
            //长度和索引指定为 32 位整数。
            Array.Copy(btAryReceiveData, 0, btAryBuffer, m_nLenth, btAryReceiveData.Length);

            //分析接收数据,以0xA0为数据起点,以协议中数据长度为数据终止点
            int nIndex     = 0; //当数据中存在A0时,记录数据的终止点
            int nMarkIndex = 0; //当数据中不存在A0时,nMarkIndex等于数据组最大索引

            for (int nLoop = 0; nLoop < btAryBuffer.Length; nLoop++)
            {
                if (btAryBuffer.Length > nLoop + 1)
                {
                    if (btAryBuffer[nLoop] == 0x31)
                    {
                        try
                        {
                            int nLen0 = Convert.ToInt32(btAryBuffer[nLoop + 1]);
                            //数据包从Len后面开始的字节数,不包含Len本身。

                            if (nLoop + 1 + nLen0 < btAryBuffer.Length)
                            {
                                byte[] btAryAnaly = new byte[nLen0 + 2];
                                Array.Copy(btAryBuffer, nLoop, btAryAnaly, 0, nLen0 + 2);

                                //MessageMan messageMan
                                MessageMan messageMan = new MessageMan(btAryAnaly);

                                AnalyDataMan(messageMan, control);

                                nLoop += 1 + nLen0;
                                nIndex = nLoop + 1;
                            }
                            else
                            {
                                nLoop += 1 + nLen0;
                            }
                            if (nIndex < nMarkIndex)
                            {
                                nIndex = nMarkIndex + 1;
                            }

                            if (nIndex < btAryBuffer.Length)
                            {
                                m_nLenth = btAryBuffer.Length - nIndex;
                                Array.Clear(m_btAryBuffer, 0, 4096);
                                Array.Copy(btAryBuffer, nIndex, m_btAryBuffer, 0, btAryBuffer.Length - nIndex);
                            }
                            else
                            {
                                m_nLenth = 0;
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                }
            }

            DealRF100(btAryReceiveData, control);
        }
Ejemplo n.º 7
0
 public void Login(UserInfo info)
 {
     Debug.Assert(IsActive);
     MessageMan.SendSystemMessage(MessageCommand.Login, info);
 }