static void Main(string[] args) { LoadPara(args); while (true) { var key = Console.ReadKey(); // 播放 // 暂停 if (key.Key == ConsoleKey.P) { Logger.Info.WriteLine(); core.P(); } // 跳至 else if (key.Key == ConsoleKey.J) { Logger.Info.WriteLine(); Logger.Info.WriteLine("JumpTo: "); bool flag = false; if (core.IsPlaying) { flag = true; core.P(); } var line = Console.ReadLine(); if (line.EndsWith("%")) { line = line.TrimEnd('%'); double per = double.Parse(line) / 100.0; if (per > 1) { per = 1; } else if (per < 0) { per = 0; } // 此处需要 -1 才能得到 index // 因 index 是从 0 开始计算 var index = (_fInfo.totalIndex - 1) * per; core.JumpTo((long)index); } if (flag) { core.P(); } } // 播放速率 else if (key.Key == ConsoleKey.R) { Logger.Info.WriteLine(); Logger.Info.WriteLine("SpeedRate: "); bool flag = false; if (core.IsPlaying) { flag = true; core.P(); } var line = Console.ReadLine(); double speed = double.Parse(line); if (speed < 0) { speed = 1; } core.SpeedRate = speed; if (flag) { core.P(); } } // 关闭 else if (key.Key == ConsoleKey.C) { Logger.Info.WriteLine(); Logger.Info.WriteLine("Close?"); bool flag = false; if (core.IsPlaying) { flag = true; core.P(); } var k = Console.ReadKey(); if (k.Key == ConsoleKey.Y) { return; } else { // 换行 Logger.Info.WriteLine(); } if (flag) { core.P(); } } } }
private void Replayer_Button_Play_Click(object sender, RoutedEventArgs e) { if (_replayer == null) { MessageBox.Show("Please select file firstly!"); return; } // not playing // paused or stoped if (!_replayer.IsPlaying) { // Check map Replayer_Map_Item buff = null; Dictionary <IPEndPoint, IPEndPoint> map = new Dictionary <IPEndPoint, IPEndPoint>(); try { foreach (Replayer_Map_Item item in Replayer_Map.Items) { buff = item; // ignore if (!(bool)item.Valid.IsChecked) { continue; } var point = item.Point.Get_IPEND(); map.Add(item._point, point); } } catch (Exception) { MessageBox.Show("Wrong Input!\nCheck the Map List At " + buff?.Num.Text); Recorder_Stop(); return; } _replayer.Initial(map, (Core.ReplayCore.SendInfo msg) => { _sender.Send(msg.bytes.ToArray(), msg.point); }, (Core.ReplayCore.ReplayInfo info) => { this.Dispatcher.Invoke(() => { var finfo = _replayer.FileInfo; if (info.index == finfo.totalIndex - 1) { if ((bool)Replayer_Flag_Loop.IsChecked) { _replayer.JumpTo(0); } } if (!Replayer_Flag_IsDraging) { Replayer_Slider.Value = info.index; } Replayer_Info.Text = info.time.AddHours(8) + " Progress Percentage: " + (100.0 * (double)info.index / ((double)finfo.totalIndex - 1)).ToString("f2") + "%" + "\nProgress Index: " + info.index + " Total Index: " + finfo.totalIndex + " Cost Time:" + info.pkgCostTime; }); }); _replayer.P(); Replayer_IsPlaying(); // save params Save_Replay_Params(); } else { _replayer.P(); Replayer_NotPlaying(); } }