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]; } } }
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; } }
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); }
public void AnalyDataMan(MessageMan messagemMan, MainControl control) { if (messagemMan.BtPacketType != 0x31) { return; } switch (messagemMan.BtCmd) { case 0x04: ProcessMan(messagemMan, control); break; } }
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); }
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); }
public void Login(UserInfo info) { Debug.Assert(IsActive); MessageMan.SendSystemMessage(MessageCommand.Login, info); }