Exemple #1
0
        internal void PingElapsed(object sender, ElapsedEventArgs e)
        {
            //TeambuilderCorrect();

            Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() =>
            {
                var keys = new List <Button>(ButtonTimers.Keys);
                foreach (Button pair in keys)
                {
                    ButtonTimers[pair]++;
                    TimeSpan time      = TimeSpan.FromSeconds(ButtonTimers[pair]);
                    var realButton     = (Button)pair.Tag;
                    realButton.Content = string.Format("{0:D2}:{1:D2} Re-Click To Leave", time.Minutes, time.Seconds);
                }
            }));
            if (i++ < 10) //Ping every 10 seconds
            {
                return;
            }

            i = 0;
            if (!Client.IsOnPlayPage)
            {
                return;
            }

            Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(async() =>
            {
                if (!RunOnce)
                {
                    RunOnce = true;
                    WaitingForQueues.Visibility = Visibility.Visible;
                    for (int b = 0; b < 3; b++)
                    {
                        seperators[b] = new GameSeperator(QueueListView)
                        {
                            Height = 80
                        };
                        switch (b)
                        {
                        case 0:
                            seperators[b].QueueLabel.Content = "Đấu Với BOT";
                            seperators[b].Tag = "Bot";
                            break;

                        case 1:
                            seperators[b].QueueLabel.Content = "Đấu Thường";
                            seperators[b].Tag = "Normal";
                            break;

                        case 2:
                            seperators[b].QueueLabel.Content = "Đấu Xếp Hạng";
                            seperators[b].Tag = "Ranked";
                            break;
                        }
                        QueueListView.Items.Add(seperators[b]);
                    }

                    //Ping
                    var bc      = new BrushConverter();
                    Brush brush = null;
                    try
                    {
                        double pingAverage = HighestPingTime(Client.Region.PingAddresses);
                        PingLabel.Content  = Math.Round(pingAverage) + "ms";
                        if (pingAverage == 0)
                        {
                            PingLabel.Content = "Timeout";
                        }

                        if (pingAverage == -1)
                        {
                            PingLabel.Content = "Hỗ Trợ Http://facebook.com/duylee9x";
                        }

                        if (pingAverage > 999 || pingAverage < 1)
                        {
                            brush = (Brush)bc.ConvertFrom("#FFFF6767");
                        }

                        if (pingAverage > 110 && pingAverage < 999)
                        {
                            brush = (Brush)bc.ConvertFrom("#FFFFD667");
                        }

                        if (pingAverage < 110 && pingAverage > 1)
                        {
                            brush = (Brush)bc.ConvertFrom("#FF67FF67");
                        }
                    } catch (NotImplementedException ex)
                    {
                        PingLabel.Content = "Hỗ Trợ Http://facebook.com/duylee9x";
                        brush             = (Brush)bc.ConvertFrom("#FFFF6767");
                        Client.Log(ex.Message);
                    } catch (Exception ex)
                    {
                        PingLabel.Content = "Lỗi không thể Check Ping";
                        brush             = (Brush)bc.ConvertFrom("#FFFF6767");
                        Client.Log(ex.Message);
                    }
                    finally
                    {
                        PingRectangle.Fill = brush;
                    }
                    //Queues
                    GameQueueConfig[] openQueues = Client.Queues;
                    Array.Sort(openQueues,
                               (config, config2) =>
                               string.Compare(config.CacheName, config2.CacheName, StringComparison.Ordinal));
                    foreach (GameQueueConfig config in openQueues)
                    {
                        QueueButtonConfig settings = new QueueButtonConfig();
                        settings.GameQueueConfig   = config;

                        if (config.CacheName.Contains("INTRO"))
                        {
                            settings.BotLevel = "INTRO";
                        }
                        else if (config.CacheName.Contains("EASY") || config.Id == 25 || config.Id == 52)
                        {
                            settings.BotLevel = "EASY";
                        }
                        else if (config.CacheName.Contains("MEDIUM"))
                        {
                            settings.BotLevel = "MEDIUM";
                        }

                        var item = new JoinQueue
                        {
                            Height      = 80,
                            QueueButton = { Tag = settings }
                        };

                        item.QueueButton.Click += QueueButton_Click;
                        //item.QueueButton.IsEnabled = false;
                        item.QueueButton.Content    = "Queue (Beta)";
                        item.TeamQueueButton.Tag    = settings;
                        item.TeamQueueButton.Click += TeamQueueButton_Click;
                        item.QueueLabel.Content     = Client.InternalQueueToPretty(config.CacheName);
                        item.QueueId = config.Id;
                        QueueInfo t  = await RiotCalls.GetQueueInformation(config.Id);
                        item.AmountInQueueLabel.Content = "People in queue: " + t.QueueLength;
                        TimeSpan time = TimeSpan.FromMilliseconds(t.WaitTime);
                        string answer = string.Format("{0:D2}m:{1:D2}s", time.Minutes, time.Seconds);
                        item.WaitTimeLabel.Content = "Avg Wait Time: " + answer;
                        if (config.TypeString == "BOT" || config.TypeString == "BOT_3x3")
                        {
                            seperators[0].Add(item);
                        }
                        else if (config.TypeString.StartsWith("RANKED_"))
                        {
                            seperators[2].Add(item);
                        }
                        else
                        {
                            seperators[1].Add(item);
                        }

                        switch (Client.InternalQueueToPretty(config.CacheName))
                        {
                        case "Teambuilder 5v5 Beta (In Dev. Do Not Play)":
                            item.QueueButton.IsEnabled = false;
                            //item.TeamQueueButton.IsEnabled = false;
                            break;

                        case "Ranked Team 5v5":
                            item.QueueButton.IsEnabled = false;
                            break;

                        case "Ranked Team 3v3":
                            item.QueueButton.IsEnabled = false;
                            break;
                        }

                        if (item.QueueId == 25 || item.QueueId == 52)   //TT and Dominion: easy and medium bots have the same QueueId
                        {
                            settings.BotLevel = "MEDIUM";
                            var item2         = new JoinQueue
                            {
                                Height      = 80,
                                QueueButton = { Tag = settings }
                            };
                            item2.QueueButton.Click     += QueueButton_Click;
                            item2.QueueButton.Content    = "Queue (Beta)";
                            item2.TeamQueueButton.Tag    = settings;
                            item2.TeamQueueButton.Click += TeamQueueButton_Click;
                            item2.QueueId                    = config.Id;
                            item2.QueueLabel.Content         = item.QueueLabel.Content.ToString().Replace("Easy", "Medium");
                            item2.AmountInQueueLabel.Content = "People in queue: " + t.QueueLength;
                            item2.WaitTimeLabel.Content      = "Avg Wait Time: " + answer;

                            seperators[0].Add(item2);

                            if (!Client.Dev)
                            {
                                item2.QueueButton.IsEnabled = false;
                            }
                        }

                        currentAmount++;
                        if (currentAmount != openQueues.Length)
                        {
                            continue;
                        }

                        WaitingForQueues.Visibility = Visibility.Hidden;
                        foreach (GameSeperator seperator in seperators)
                        {
                            seperator.UpdateLabels();
                        }

                        DoneLoading = true;
                    }
                }
                else if (seperators[seperators.Length - 1] != null)
                {
                    foreach (GameSeperator seperator in seperators)
                    {
                        seperator.UpdateLabels();
                    }
                }
            }));
        }
        internal void PingElapsed(object sender, ElapsedEventArgs e)
        {
            //TeambuilderCorrect();

            Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() =>
            {
                var keys = new List<Button>(ButtonTimers.Keys);
                foreach (Button pair in keys)
                {
                    ButtonTimers[pair]++;
                    TimeSpan time = TimeSpan.FromSeconds(ButtonTimers[pair]);
                    var realButton = (Button) pair.Tag;
                    realButton.Content = string.Format("{0:D2}:{1:D2} Re-Click To Leave", time.Minutes, time.Seconds);
                }
            }));
            if (i++ < 10) //Ping every 10 seconds
                return;

            i = 0;
            if (!Client.IsOnPlayPage)
                return;

            Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(async () =>
            {
                if (!RunOnce)
                {
                    RunOnce = true;
                    WaitingForQueues.Visibility = Visibility.Visible;
                    for (int b = 0; b < 3; b++)
                    {
                        seperators[b] = new GameSeperator(QueueListView)
                        {
                            Height = 80
                        };
                        switch (b)
                        {
                            case 0:
                                seperators[b].QueueLabel.Content = "Bot Queues";
                                seperators[b].Tag = "Bot";
                                break;
                            case 1:
                                seperators[b].QueueLabel.Content = "Normal Queues";
                                seperators[b].Tag = "Normal";
                                break;
                            case 2:
                                seperators[b].QueueLabel.Content = "Ranked Queues";
                                seperators[b].Tag = "Ranked";
                                break;
                        }
                        QueueListView.Items.Add(seperators[b]);
                    }

                    //Ping
                    var bc = new BrushConverter();
                    Brush brush = null;
                    try
                    {
                        double pingAverage = HighestPingTime(Client.Region.PingAddresses);
                        PingLabel.Content = Math.Round(pingAverage) + "ms";
                        if (pingAverage == 0)
                            PingLabel.Content = "Timeout";

                        if (pingAverage == -1)
                            PingLabel.Content = "Ping not enabled for this region";                        
                        
                        if (pingAverage > 999 || pingAverage < 1)
                            brush = (Brush)bc.ConvertFrom("#FFFF6767");
                        
                        if (pingAverage > 110 && pingAverage < 999)
                            brush = (Brush)bc.ConvertFrom("#FFFFD667");
                        
                        if (pingAverage < 110 && pingAverage > 1)
                            brush = (Brush)bc.ConvertFrom("#FF67FF67");

                    } catch(NotImplementedException ex)
                    {
                        PingLabel.Content = "Ping not enabled for this region";
                        brush = (Brush)bc.ConvertFrom("#FFFF6767");
                        Client.Log(ex.Message);
                    } catch(Exception ex)
                    {
                        PingLabel.Content = "Error occured while pinging";
                        brush = (Brush)bc.ConvertFrom("#FFFF6767");
                        Client.Log(ex.Message);
                    }
                    finally
                    {
                        PingRectangle.Fill = brush;
                    }
                    //Queues
                    GameQueueConfig[] openQueues = Client.Queues;
                    Array.Sort(openQueues,
                        (config, config2) =>
                            string.Compare(config.CacheName, config2.CacheName, StringComparison.Ordinal));
                    foreach (GameQueueConfig config in openQueues)
                    {
                        QueueButtonConfig settings = new QueueButtonConfig();
                        settings.GameQueueConfig = config;

                        if(config.CacheName.Contains("INTRO"))
                            settings.BotLevel = "INTRO";
                        else if (config.CacheName.Contains("EASY") || config.Id == 25 || config.Id == 52)
                            settings.BotLevel = "EASY";
                        else if (config.CacheName.Contains("MEDIUM"))
                            settings.BotLevel = "MEDIUM";

                        var item = new JoinQueue
                        {
                            Height = 80,
                            QueueButton = {Tag = settings}
                        };
                        
                        item.QueueButton.Click += QueueButton_Click;
                        //item.QueueButton.IsEnabled = false;
                        item.QueueButton.Content = "Queue (Beta)";
                        item.TeamQueueButton.Tag = settings;
                        item.TeamQueueButton.Click += TeamQueueButton_Click;
                        item.QueueLabel.Content = Client.InternalQueueToPretty(config.CacheName);
                        item.QueueId = config.Id;
                        QueueInfo t = await RiotCalls.GetQueueInformation(config.Id);
                        item.AmountInQueueLabel.Content = "People in queue: " + t.QueueLength;
                        TimeSpan time = TimeSpan.FromMilliseconds(t.WaitTime);
                        string answer = string.Format("{0:D2}m:{1:D2}s", time.Minutes, time.Seconds);
                        item.WaitTimeLabel.Content = "Avg Wait Time: " + answer;
                        if (config.TypeString == "BOT" || config.TypeString == "BOT_3x3")
                            seperators[0].Add(item);
                        else if (config.TypeString.StartsWith("RANKED_"))
                            seperators[2].Add(item);
                        else
                            seperators[1].Add(item);

                        switch (Client.InternalQueueToPretty(config.CacheName))
                        {
                            case "Teambuilder 5v5 Beta (In Dev. Do Not Play)":
                                item.QueueButton.IsEnabled = false;
                                //item.TeamQueueButton.IsEnabled = false;
                                break;
                            case "Ranked Team 5v5":
                                item.QueueButton.IsEnabled = false;
                                break;
                            case "Ranked Team 3v3":
                                item.QueueButton.IsEnabled = false;
                                break;
                        }

                        if (item.QueueId == 25 || item.QueueId == 52)   //TT and Dominion: easy and medium bots have the same QueueId
                        {
                            settings.BotLevel = "MEDIUM";
                            var item2 = new JoinQueue
                            {
                                Height = 80,
                                QueueButton = { Tag = settings }
                            };
                            item2.QueueButton.Click += QueueButton_Click;
                            item2.QueueButton.Content = "Queue (Beta)";
                            item2.TeamQueueButton.Tag = settings;
                            item2.TeamQueueButton.Click += TeamQueueButton_Click;
                            item2.QueueId = config.Id;
                            item2.QueueLabel.Content = item.QueueLabel.Content.ToString().Replace("Easy", "Medium");
                            item2.AmountInQueueLabel.Content = "People in queue: " + t.QueueLength;
                            item2.WaitTimeLabel.Content = "Avg Wait Time: " + answer;

                            seperators[0].Add(item2);

                            if(!Client.Dev)
                                item2.QueueButton.IsEnabled = false;
                        }
                        
                        currentAmount++;
                        if (currentAmount != openQueues.Length)
                            continue;

                        WaitingForQueues.Visibility = Visibility.Hidden;
                        foreach (GameSeperator seperator in seperators)
                            seperator.UpdateLabels();

                        DoneLoading = true;
                    }
                }
                else if (seperators[seperators.Length - 1] != null)
                    foreach (GameSeperator seperator in seperators)
                        seperator.UpdateLabels();
            }));
        }