コード例 #1
0
        public async void getData()
        {
            Classes.CustomSnapshotRoot root   = null;
            Classes.KeeperAPI          keeper = new Classes.KeeperAPI();
            Action workAction = delegate
            {
                BackgroundWorker worker = new BackgroundWorker();
                worker.DoWork += delegate
                {
                    root = keeper.getKeeperInfo(guid);
                };
                worker.RunWorkerCompleted += async delegate
                {
                    if (root == null)
                    {
                        if (extendedStats.Count == 0)
                        {
                            lblSaved.Content = "Something went wrong with the server";
                            //Potentially exit the form here!
                            _timer.Enabled = false;
                            MessageBox.Show("The server crashed or was never available. \n Please close this window.");
                            this.Close();
                            return;
                        }
                        else
                        {
                            forceSave();
                            extendedStats.Clear();
                            return;
                        }
                    }
                    if (!root.snapshot.status.Equals("SUCCESS", StringComparison.OrdinalIgnoreCase))
                    {
                        return;
                    }
                    try
                    {
                        int t1count      = root.snapshot.teamInfo.team1.player.Count;
                        int t2count      = root.snapshot.teamInfo.team2.player.Count;
                        int totalPlayers = t1count + t2count;
                        lblTime.Content         = "Round Time: " + Classes.UsefulFunctions.getTime(root.snapshot.roundTime, 1);
                        lblCountPlayers.Content = "Getting Statistics for " + totalPlayers.ToString() + " players";
                        lblMap.Content          = "Map: " + Classes.JSONHelper.whatMap(root.snapshot.mapId);
                        lblMode.Content         = "Mode: " + Classes.JSONHelper.whatMode(root.snapshot.modeId);
                        foreach (var player in root.snapshot.teamInfo.team1.player)
                        {
                            Classes.Structs.PlayerLoadout playerInfo = await Classes.GetPlayersKit.GetWeaponInfo(player.playerId, player.name);

                            player.kit             = playerInfo.selectedKit;
                            player.primaryWeapon   = playerInfo.kitList[Convert.ToInt32(playerInfo.selectedKit)].kitIdInformation[0];
                            player.secondaryWeapon = playerInfo.kitList[Convert.ToInt32(playerInfo.selectedKit)].kitIdInformation[1];
                        }
                        foreach (var player in root.snapshot.teamInfo.team2.player)
                        {
                            Classes.Structs.PlayerLoadout playerInfo = await Classes.GetPlayersKit.GetWeaponInfo(player.playerId, player.name);

                            player.kit             = playerInfo.selectedKit;
                            player.primaryWeapon   = playerInfo.kitList[Convert.ToInt32(playerInfo.selectedKit)].kitIdInformation[0];
                            player.secondaryWeapon = playerInfo.kitList[Convert.ToInt32(playerInfo.selectedKit)].kitIdInformation[1];
                        }
                        this.Title = "Logging: " + totalPlayers.ToString() + "P | " + Classes.UsefulFunctions.getTime(root.snapshot.roundTime, 1) + " | " + Classes.JSONHelper.whatMap(root.snapshot.mapId);
                        if (root.snapshot.roundTime != 0)
                        {
                            extendedStats.Add(root);
                        }
                        bool descrEnabled = false;
                        if ((bool)cbAddDescrAuto.IsChecked)
                        {
                            descrEnabled = true;
                        }
                        Classes.DataExport export = new Classes.DataExport(extendedStats, root);
                        string             fileName;
                        if (descrEnabled == true)
                        {
                            fileName = export.saveOrNot(txtDescription.Text);
                            if (fileName != "")
                            {
                                lblSaved.Content = "Last Saved at: " + DateTime.Now.ToString();
                                if (cbOpenOnFinish.IsChecked == true)
                                {
                                    XAML.AddBombs addBombs = new XAML.AddBombs(Classes.UsefulFunctions.getFullReport(fileName), fileName);
                                    addBombs.Show();
                                }
                                fileName = null;
                                extendedStats.Clear();
                            }
                        }
                        else
                        {
                            fileName = export.saveOrNot(txtDescription.Text);
                            if (fileName != "")
                            {
                                lblSaved.Content = "Last Saved at: " + DateTime.Now.ToString();
                                if (cbOpenOnFinish.IsChecked == true)
                                {
                                    XAML.AddBombs addBombs = new XAML.AddBombs(Classes.UsefulFunctions.getFullReport(fileName), fileName);
                                    addBombs.Show();
                                }
                                fileName = null;

                                extendedStats.Clear();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Classes.Logger.addLog("Guid: " + guid + "|" + root.ToString() + ":" + ex.ToString(), 1);
                    }
                };
                worker.RunWorkerAsync();
            };
            await Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, workAction);
        }
コード例 #2
0
        public async void _timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            classCounts = null;
            classCounts = new classCounters();
            Classes.CustomSnapshotRoot root   = null;
            Classes.KeeperAPI          keeper = new Classes.KeeperAPI();
            Action workAction = delegate
            {
                BackgroundWorker worker = new  BackgroundWorker();
                worker.DoWork += delegate
                {
                    root = keeper.getKeeperInfo(guid);
                };
                worker.RunWorkerCompleted += async delegate
                {
                    try
                    {
                        if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) == "US")
                        {
                            imgFaction1.Source = loadBitmap(Properties.Resources.usa);
                        }
                        else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) == "CN")
                        {
                            imgFaction1.Source = loadBitmap(Properties.Resources.china);
                        }
                        else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) == "RU")
                        {
                            imgFaction1.Source = loadBitmap(Properties.Resources.ru);
                        }
                        if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) == "US")
                        {
                            imgFaction2.Source = loadBitmap(Properties.Resources.usa);
                        }
                        else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) == "CN")
                        {
                            imgFaction2.Source = loadBitmap(Properties.Resources.china);
                        }
                        else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) == "RU")
                        {
                            imgFaction2.Source = loadBitmap(Properties.Resources.ru);
                        }

                        foreach (var player in root.snapshot.teamInfo.team1.player)
                        {
                            Classes.Structs.PlayerLoadout playerInfo = await Classes.GetPlayersKit.GetWeaponInfo(player.playerId, player.name);

                            switch (playerInfo.selectedKit.ToString())
                            {
                            case "0":
                                classCounts.t1Assault += 1;

                                if (playerInfo.kitList[0].kitIdInformation[3] != 2887915611 && playerInfo.kitList[0].kitIdInformation[4] != 2887915611)
                                {
                                    classCounts.defib += 1;
                                }
                                break;     //2887915611

                            case "1":
                                classCounts.t1Engineer += 1;
                                break;

                            case "2":
                                classCounts.t1Support += 1;
                                break;

                            case "3":
                                classCounts.t1Recon += 1;
                                break;

                            default:
                                break;
                            }
                        }
                        //Assault
                        pbAssault1.Value     = classCounts.t1Assault;
                        lblt1Assault.Content = classCounts.t1Assault.ToString();
                        //Engineer
                        pbEngineer1.Value     = classCounts.t1Engineer;
                        lblt1Engineer.Content = classCounts.t1Engineer.ToString();
                        //Support
                        pbSupport1.Value     = classCounts.t1Support;
                        lblt1Support.Content = classCounts.t1Support.ToString();
                        //Recon
                        pbRecon1.Value     = classCounts.t1Recon;
                        lblt1Recon.Content = classCounts.t1Recon.ToString();

                        foreach (var player in root.snapshot.teamInfo.team2.player)
                        {
                            Classes.Structs.PlayerLoadout playerInfo = await Classes.GetPlayersKit.GetWeaponInfo(player.playerId, player.name);

                            switch (playerInfo.selectedKit.ToString())
                            {
                            case "0":
                                classCounts.t2Assault += 1;
                                if (playerInfo.kitList[0].kitIdInformation[3] != 2887915611 && playerInfo.kitList[0].kitIdInformation[4] != 2887915611)
                                {
                                    classCounts.defib += 1;
                                }
                                break;

                            case "1":
                                classCounts.t2Engineer += 1;
                                break;

                            case "2":
                                classCounts.t2Support += 1;
                                break;

                            case "3":
                                classCounts.t2Recon += 1;
                                break;

                            default:
                                break;
                            }
                        }
                        //Assault
                        pbAssault2.Value     = classCounts.t2Assault;
                        lblt2Assault.Content = classCounts.t2Assault.ToString();
                        //Support
                        pbEngineer2.Value     = classCounts.t2Engineer;
                        lblt2Engineer.Content = classCounts.t2Engineer.ToString();
                        //Engineer
                        pbSupport2.Value     = classCounts.t2Support;
                        lblt2Support.Content = classCounts.t2Support.ToString();
                        //Recon
                        pbRecon2.Value     = classCounts.t2Recon;
                        lblt2Recon.Content = classCounts.t2Recon.ToString();
                        lblAssaultPlayerWithDefibs.Content = classCounts.defib.ToString();
                    }
                    catch (Exception ex)
                    {
                        Classes.Logger.addLog(ex.ToString(), 1);
                    }
                    //Update code in here
                };
                worker.RunWorkerAsync();
            };
            await Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, workAction);
        }
コード例 #3
0
        public async void ScoreboardRenderer1(XAML.Scoreboard parent, string mapID, CustomSnapshotRoot root, string teamlogo1 = "", string teamlogo2 = "")
        {
            if ((root.snapshot.teamInfo.team1.player.Count + root.snapshot.teamInfo.team2.player.Count) > 10)
            {
                return;
            }
            string teamLogoDir        = Directory.GetCurrentDirectory() + "\\images\\team_logos\\";
            string scoreboardTemplate = Directory.GetCurrentDirectory() + "\\images\\background\\bg.png";

            if (root == null)
            {
                return;
            }
            //Set up where to output the image to
            m_parent = parent;
            //Get the map image from resources Dynamically
            object O = Properties.Resources.ResourceManager.GetObject(mapID.ToLower());

            //Font type
            Gdi.Font font = new Gdi.Font("Trebuchet MS", 20f, System.Drawing.FontStyle.Bold);
            //Load the scoreboard template image
            Gdi.Bitmap bitmap = null;
            try
            {
                bitmap = new Gdi.Bitmap(scoreboardTemplate);
            }catch (Exception)
            {
                bitmap = Properties.Resources.bg;
            }

            Gdi.Bitmap   clone = new Gdi.Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
            Gdi.Graphics gr    = Gdi.Graphics.FromImage(clone);

            gr.DrawImage(bitmap, new Gdi.Rectangle(0, 0, clone.Width, clone.Height));

            //bitmap.MakeTransparent();
            //bitmap.
            //Load the bitmap to a gdi graphic
            Gdi.Graphics g = Gdi.Graphics.FromImage(bitmap);
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.TextRenderingHint = Gdi.Text.TextRenderingHint.AntiAliasGridFit;
            Gdi.Bitmap team1Logo = null;
            Gdi.Bitmap team2Logo = null;
            //========= Team 1s Logo
            if (teamlogo1 == "")
            {
                if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) == "US")
                {
                    team1Logo = new Gdi.Bitmap(Properties.Resources.usa);
                }
                else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) == "CN")
                {
                    team1Logo = new Gdi.Bitmap(Properties.Resources.china);
                }
                else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) == "RU")
                {
                    team1Logo = new Gdi.Bitmap(Properties.Resources.ru);
                }
            }
            else
            {
                team1Logo = new Gdi.Bitmap(teamLogoDir + teamlogo1);
            }
            //Load the map image to a bitmap
            g.DrawImage(resize(250, 250, (Gdi.Image)team1Logo), 200, 360);
            //========= Team 2s Logo
            if (teamlogo2 == "")
            {
                if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) == "US")
                {
                    team2Logo = new Gdi.Bitmap(Properties.Resources.usa);
                }
                else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) == "CN")
                {
                    team2Logo = new Gdi.Bitmap(Properties.Resources.china);
                }
                else if (Classes.JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) == "RU")
                {
                    team2Logo = new Gdi.Bitmap(Properties.Resources.ru);
                }
            }
            else
            {
                team2Logo = new Gdi.Bitmap(teamLogoDir + teamlogo2);
            }            //Load the map image to a bitmap
            g.DrawImage(resize(250, 250, (Gdi.Image)team2Logo), 1000, 360);


            Gdi.Bitmap map = new Gdi.Bitmap(resize(350, 170, (Gdi.Image)O));
            //draw the map image onto the scoreboard template
            g.DrawImage(map, 1200, 880);
            map.Dispose();
            map = null;
            //draw a string onto the map image
            g.DrawString(JSONHelper.whatMap(root.snapshot.mapId), font, Gdi.Brushes.White, 1480, 880);
            g.DrawString(JSONHelper.whatMode(root.snapshot.modeId), font, Gdi.Brushes.White, 1480, 910);
            g.DrawString(UsefulFunctions.getTime(root.snapshot.roundTime, 1), font, Gdi.Brushes.White, 1480, 940);

            //Draw player names for team 1 and team 2 with player data to the scoreboard
            //http://battlelog.battlefield.com/bf4/servers/show/pc/1ab24458-5ee9-4765-a2e8-fa96c464f506/Resistence-Team-Server-SQOBLITERATION-5on5-ESL-Rules-ON/
            int row         = 560;
            int max         = 58;
            int team1Kills  = 0;
            int team1Deaths = 0;
            int team1Score  = 0;

            g.DrawString(JSONHelper.whatFaction(root.snapshot.teamInfo.team1.faction) + " - " + root.snapshot.team1Tickets.tickets.ToString() + "/" + root.snapshot.team1Tickets.ticketsMax.ToString()
                         , font, Gdi.Brushes.White, 200, 330);
            foreach (var player in root.snapshot.teamInfo.team1.player)
            {
                if (player.tag != "")
                {
                    string playerName = "[" + player.tag + "]" + player.name;
                    g.DrawString(playerName, font, Gdi.Brushes.White, 190, row);
                }
                else
                {
                    g.DrawString(player.name, font, Gdi.Brushes.White, 190, row);
                }
                //Draw Players Kit
                Gdi.Bitmap kitIcon = null;
                Classes.Structs.PlayerLoadout playerInfo = await Classes.GetPlayersKit.GetWeaponInfo(player.playerId, player.name);

                switch (playerInfo.selectedKit.ToString())
                {
                case "0":
                    kitIcon = Properties.Resources._0;
                    break;

                case "1":
                    kitIcon = Properties.Resources._1;
                    break;

                case "2":
                    kitIcon = Properties.Resources._2;
                    break;

                case "3":
                    kitIcon = Properties.Resources._3;
                    break;

                default:
                    kitIcon = Properties.Resources._0;
                    break;
                }

                g.DrawImage((Gdi.Image)kitIcon, 165, row);

                g.DrawString(player.score.ToString(), font, Gdi.Brushes.White, 480, row);
                g.DrawString(player.kills.ToString(), font, Gdi.Brushes.White, 620, row);
                g.DrawString(player.deaths.ToString(), font, Gdi.Brushes.White, 725, row);
                if (player.bombDetonationTime != null)
                {
                    int i = 1;
                    foreach (var time in player.bombDetonationTime)
                    {
                        g.DrawString(Classes.UsefulFunctions.getTime(time, 1), font, Gdi.Brushes.White, 850, (row + 35) - (i * 26));
                        i += 1;
                    }
                }
                row          = row + max;
                team1Kills  += player.kills;
                team1Deaths += player.deaths;
                team1Score  += player.score;
                kitIcon.Dispose();
            }
            //------------------------------------
            //------------- Draw Team Totals
            g.DrawString(team1Score.ToString(), font, Gdi.Brushes.White, 480, 835);
            g.DrawString(team1Kills.ToString(), font, Gdi.Brushes.White, 620, 835);
            g.DrawString(team1Deaths.ToString(), font, Gdi.Brushes.White, 725, 835);

            //-------------------------------------
            row = 560;
            int rightOffset = 815;

            g.DrawString(JSONHelper.whatFaction(root.snapshot.teamInfo.team2.faction) + " - " + root.snapshot.team2Tickets.tickets.ToString() + "/" + root.snapshot.team2Tickets.ticketsMax.ToString()
                         , font, Gdi.Brushes.White, 200 + rightOffset, 330);

            int team2Kills  = 0;
            int team2Deaths = 0;
            int team2Score  = 0;

            foreach (var player in root.snapshot.teamInfo.team2.player)
            {
                if (player.tag != "")
                {
                    string playerName = "[" + player.tag + "]" + player.name;
                    g.DrawString(playerName, font, Gdi.Brushes.White, 190 + rightOffset, row);
                }
                else
                {
                    g.DrawString(player.name, font, Gdi.Brushes.White, 190 + rightOffset, row);
                }
                Gdi.Bitmap kitIcon = null;
                Classes.Structs.PlayerLoadout playerInfo = await Classes.GetPlayersKit.GetWeaponInfo(player.playerId, player.name);

                switch (playerInfo.selectedKit.ToString())
                {
                case "0":
                    kitIcon = Properties.Resources._0;
                    break;

                case "1":
                    kitIcon = Properties.Resources._1;
                    break;

                case "2":
                    kitIcon = Properties.Resources._2;
                    break;

                case "3":
                    kitIcon = Properties.Resources._3;
                    break;
                }

                g.DrawImage((Gdi.Image)kitIcon, 165 + rightOffset, row);
                g.DrawString(player.score.ToString(), font, Gdi.Brushes.White, 480 + rightOffset, row);
                g.DrawString(player.kills.ToString(), font, Gdi.Brushes.White, 620 + rightOffset, row);
                g.DrawString(player.deaths.ToString(), font, Gdi.Brushes.White, 725 + rightOffset, row);
                if (player.bombDetonationTime != null)
                {
                    int i = 1;
                    foreach (var time in player.bombDetonationTime)
                    {
                        g.DrawString(Classes.UsefulFunctions.getTime(time, 1), font, Gdi.Brushes.White, 850 + rightOffset, (row + 35) - (i * 26));
                        i += 1;
                    }
                }
                row          = row + max;
                team2Kills  += player.kills;
                team2Deaths += player.deaths;
                team2Score  += player.score;
                kitIcon.Dispose();
            }
            //------------------------------------
            //------------- Draw Team Totals
            g.DrawString(team2Score.ToString(), font, Gdi.Brushes.White, 480 + rightOffset, 835);
            g.DrawString(team2Kills.ToString(), font, Gdi.Brushes.White, 620 + rightOffset, 835);
            g.DrawString(team2Deaths.ToString(), font, Gdi.Brushes.White, 725 + rightOffset, 835);

            //-------------------------------------
            //Convert to ui readable image
            ImageSource bitmapSource = loadBitmap(bitmap);

            /*ImageSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(),
             *                    IntPtr.Zero,
             *                    Int32Rect.Empty,
             *                    BitmapSizeOptions.FromEmptyOptions());*/
            //Try and dispose everything
            if (bitmapSource != null)
            {
                m_parent.image.Source = bitmapSource;
            }
            font.Dispose();
            clone.Dispose();
            g.Dispose();
            bitmap.Dispose();
            team1Logo.Dispose();
            team2Logo.Dispose();
            gr.Dispose();

            // Create a writeable bitmap (which is a valid WPF Image Source
        }