Exemple #1
0
        private byte[] WorkImpl(byte[] bytes)
        {
            try
            {
                using (MemoryStream stream = new MemoryStream(bytes))
                    using (PPDPack.V2.PackReader reader = new PPDPack.V2.PackReader(stream))
                    {
                        var dataType = (DataType)ParseInt(reader, "DataType");
                        var packable = PackableBase.Create(dataType);
                        if (packable != null)
                        {
                            packable.Read(reader);
                            OnDataReceived(packable);
                        }

                        byte[] restBytes = new byte[bytes.Length - reader.FileSize];
                        if (restBytes.Length > 0)
                        {
                            Array.Copy(bytes, reader.FileSize, restBytes, 0, restBytes.Length);
                        }
                        return(restBytes);
                    }
            }
            catch
            {
                return(bytes);
            }
        }
Exemple #2
0
 public override void ProcessData(PackableBase packable)
 {
     if (packable is ScoreInfo)
     {
         SetScoreInfo((ScoreInfo)packable);
     }
     else if (packable is UpdateInfo)
     {
         AddUpdateInfo((UpdateInfo)packable);
     }
     else if (packable is ResultInfo)
     {
         SetResultInfo((ResultInfo)packable);
     }
 }
Exemple #3
0
 public override void ProcessData(PackableBase packable)
 {
     if (packable is ScoreInfo)
     {
         SetScoreInfo((ScoreInfo)packable);
     }
     else if (packable is PlayerInfo)
     {
         AddPlayerInfo((PlayerInfo)packable);
     }
     else if (packable is UpdateInfo)
     {
         AddUpdateInfo((UpdateInfo)packable);
     }
     else if (packable is ItemInfo)
     {
         AddItemInfo((ItemInfo)packable);
     }
 }
Exemple #4
0
        void host_DataReceived(PackableBase obj)
        {
            dispatcher.Invoke((Action)(() =>
            {
                if (obj is ScoreInfo)
                {
                    var scoreInfo = (ScoreInfo)obj;
                    IsMulti = scoreInfo.PlayType == PlayType.MultiPlay;
                }

                if (IsMulti)
                {
                    MultiPlayViewModel.ProcessData(obj);
                }
                else
                {
                    SinglePlayViewModel.ProcessData(obj);
                }
            }));
        }
Exemple #5
0
 public void Send(PackableBase packable)
 {
     if (!connected || !tcpClient.Connected)
     {
         return;
     }
     try
     {
         using (MemoryStream stream = new MemoryStream())
         {
             using (PPDPack.V2.PackWriter writer = new PPDPack.V2.PackWriter(stream))
             {
                 packable.Write(writer);
             }
             stream.Close();
             Send(stream.ToArray());
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Send Error: {0}", e.Message);
         Console.WriteLine("Send Error: {0}", e.StackTrace);
     }
 }
Exemple #6
0
 private void OnDataReceived(PackableBase packable)
 {
     DataReceived?.Invoke(packable);
 }
Exemple #7
0
 public abstract void ProcessData(PackableBase packable);