Exemplo n.º 1
0
        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();
                    }
                }
            }
        }
Exemplo n.º 2
0
        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();
            }
        }