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); } }
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); } }
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); } }
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); } })); }
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); } }
private void OnDataReceived(PackableBase packable) { DataReceived?.Invoke(packable); }
public abstract void ProcessData(PackableBase packable);