Esempio n. 1
0
        public Classes.CustomSnapshotRoot getSnapshot(string filename)
        {
            Classes.CustomSnapshotRoot returnRoot = null;
            try
            {
                string s = File.ReadAllText(filename);
                List <Classes.CustomSnapshotRoot> rootList = JsonConvert.DeserializeObject <List <Classes.CustomSnapshotRoot> >(s);

                returnRoot = rootList[rootList.Count - 1];
                int i = 0;
                foreach (var roots in rootList)
                {
                    if (roots.snapshot.roundTime == returnRoot.snapshot.roundTime)
                    {
                        return(rootList[i]);
                    }
                    i++;
                }
            }

            catch (Exception ex)
            {
                Classes.Logger.addLog(ex.ToString(), 1);
            }

            return(returnRoot);
        }
Esempio n. 2
0
 public DataExport(List <Classes.CustomSnapshotRoot> root, CustomSnapshotRoot check)
 {
     PotentialSave = root;
     checkR        = check;
 }
Esempio n. 3
0
        public List <Classes.playersData> CreateMassData()
        {
            List <Classes.playersData> massPlayerData = new List <Classes.playersData>();

            Classes.Logger.addLog("btnMassPlayerData_Click() - mass report created");
            massPlayerData.Clear();
            //if (lbReports.SelectedItems.Count < 2)
            if (2 == 1)
            {
                // MessageBox.Show("Select more than one Battlereport");
            }
            else
            {
                foreach (MyItem item in lbReports.SelectedItems)
                {
                    Classes.CustomSnapshotRoot m_report = getSnapshot(reports[lbReports.Items.IndexOf(item)]);

                    foreach (var player in m_report.snapshot.teamInfo.team1.player)
                    {
                        bool addOrNot = true;
                        foreach (var name in massPlayerData)
                        {
                            if (player.name == name.name)
                            {
                                addOrNot = false;
                            }
                        }
                        if (addOrNot == true)
                        {
                            massPlayerData.Add(new Classes.playersData {
                                deaths = player.deaths, kills = player.kills, name = player.name, score = player.score, bombsDetonated = player.bombsDetonated
                            });
                        }
                        else
                        {
                            int index     = massPlayerData.FindLastIndex(c => c.name == player.name);
                            int addKills  = massPlayerData[index].kills;
                            int addDeaths = massPlayerData[index].deaths;
                            int addScore  = massPlayerData[index].score;
                            int addBombs  = massPlayerData[index].bombsDetonated;
                            massPlayerData[index] = new Classes.playersData()
                            {
                                deaths = player.deaths + addDeaths, kills = player.kills + addKills, name = player.name, score = player.score + addScore, bombsDetonated = player.bombsDetonated + addBombs
                            };
                        }
                    }
                    foreach (var player in m_report.snapshot.teamInfo.team2.player)
                    {
                        bool addOrNot = true;
                        foreach (var name in massPlayerData)
                        {
                            if (player.name == name.name)
                            {
                                addOrNot = false;
                            }
                        }
                        if (addOrNot == true)
                        {
                            massPlayerData.Add(new Classes.playersData {
                                deaths = player.deaths, kills = player.kills, name = player.name, score = player.score, bombsDetonated = player.bombsDetonated
                            });
                        }
                        else
                        {
                            int index     = massPlayerData.FindLastIndex(c => c.name == player.name);
                            int addKills  = massPlayerData[index].kills;
                            int addDeaths = massPlayerData[index].deaths;
                            int addScore  = massPlayerData[index].score;
                            int addBombs  = massPlayerData[index].bombsDetonated;

                            massPlayerData[index] = new Classes.playersData()
                            {
                                deaths = player.deaths + addDeaths, kills = player.kills + addKills, name = player.name, score = player.score + addScore, bombsDetonated = player.bombsDetonated + addBombs
                            };
                        }
                    }
                }
            }
            return(massPlayerData);
        }
Esempio n. 4
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
        }
Esempio n. 5
0
 public ScoreboardRenderer(XAML.Scoreboard parent, string mapID, CustomSnapshotRoot root, string teamlogo1 = "", string teamlogo2 = "")
 {
     ScoreboardRenderer1(parent, mapID, root, teamlogo1, teamlogo2);
 }
Esempio n. 6
0
        public CustomSnapshotRoot getKeeperInfo(string guid)
        {
            string keeperData = "";
            getNumPlayersOnServer playersOnServerData = getNumPlayersOnServerInfo(guid);
            SnapshotRoot          snapshotData        = null;
            CustomSnapshotRoot    snapshotSend        = null;
            List <playersData>    team0Data           = new List <playersData>();
            List <playersData>    team1Data           = new List <playersData>();
            List <playersData>    team2Data           = new List <playersData>();
            playersData           empty = new playersData {
                name = "No players on the server"
            };

            try
            {
                using (WebClient wc = new WebClient())
                {
                    keeperData = wc.DownloadString(keeperURL + guid);
                }
            }catch (Exception)
            {
                Classes.Logger.addLog("The server crashed or was never available: " + guid);
            }

            snapshotData = JsonConvert.DeserializeObject <SnapshotRoot>(keeperData);

            if (snapshotData == null)
            {
                return(null);
            }
            if (!snapshotData.snapshot.status.Equals("SUCCESS", StringComparison.OrdinalIgnoreCase))
            {
                return(null);
            }
            //run update code and return null

            if (snapshotData.snapshot.teamInfo.Team0 != null)
            {
                var team0 = snapshotData.snapshot.teamInfo.Team0;
                foreach (KeyValuePair <string, JToken> x in team0.players)
                {
                    TeamPlayer playerInfo = x.Value.ToObject <TeamPlayer>();

                    team0Data.Add(
                        new playersData
                    {
                        playerId = ulong.Parse(x.Key.ToString()),
                        name     = playerInfo.Name,
                        kills    = playerInfo.kills,
                        deaths   = playerInfo.deaths,
                        score    = playerInfo.score,
                        tag      = playerInfo.tag,
                        squad    = playerInfo.squad,
                        role     = playerInfo.role
                    });
                }
            }
            if (snapshotData.snapshot.teamInfo.Team1 != null)
            {
                var team1 = snapshotData.snapshot.teamInfo.Team1;
                foreach (KeyValuePair <string, JToken> x in team1.players)
                {
                    TeamPlayer playerInfo = x.Value.ToObject <TeamPlayer>();

                    team1Data.Add(
                        new playersData
                    {
                        playerId = ulong.Parse(x.Key.ToString()),
                        name     = playerInfo.Name,
                        kills    = playerInfo.kills,
                        deaths   = playerInfo.deaths,
                        score    = playerInfo.score,
                        tag      = playerInfo.tag,
                        squad    = playerInfo.squad,
                        role     = playerInfo.role
                    });
                }
            }
            else
            {
                team1Data.Add(empty);
            }

            if (snapshotData.snapshot.teamInfo.Team2 != null)
            {
                var team2 = snapshotData.snapshot.teamInfo.Team2;
                foreach (KeyValuePair <string, JToken> x in team2.players)
                {
                    TeamPlayer playerInfo = x.Value.ToObject <TeamPlayer>();

                    team2Data.Add(
                        new playersData
                    {
                        playerId = ulong.Parse(x.Key.ToString()),
                        name     = playerInfo.Name,
                        kills    = playerInfo.kills,
                        deaths   = playerInfo.deaths,
                        score    = playerInfo.score,
                        tag      = playerInfo.tag,
                        squad    = playerInfo.squad,
                        role     = playerInfo.role
                    });
                }
            }
            else
            {
                team2Data.Add(empty);
            }
            //SORT TEAM DATA BY SCORE
            team1Data = team1Data.OrderByDescending(x => x.score).ToList();
            team2Data = team2Data.OrderByDescending(x => x.score).ToList();
            //Copy snapshotData to snapshotSend
            //--------------COPY---------------
            //repackage all data into CustomSnapshotRoot
            int team1Tickets    = 0;
            int team2Tickets    = 0;
            int team1TicketsMax = 0;
            int team2TicketsMax = 0;

            if (snapshotData.snapshot.Conquest != null)
            {
                team1Tickets    = snapshotData.snapshot.Conquest.Team1.tickets;
                team1TicketsMax = snapshotData.snapshot.Conquest.Team1.ticketsMax;
                team2Tickets    = snapshotData.snapshot.Conquest.Team2.tickets;
                team2TicketsMax = snapshotData.snapshot.Conquest.Team2.ticketsMax;
            }
            else if (snapshotData.snapshot.Deathmatch != null)
            {
                team1Tickets    = snapshotData.snapshot.Deathmatch.Team1.Kills;
                team1TicketsMax = snapshotData.snapshot.Deathmatch.Team1.KillsMax;
                team2Tickets    = snapshotData.snapshot.Deathmatch.Team2.Kills;
                team2TicketsMax = snapshotData.snapshot.Deathmatch.Team2.KillsMax;
            }
            try
            {
                snapshotSend = new CustomSnapshotRoot
                {
                    lastUpdated = snapshotData.lastUpdated,
                    snapshot    = new CustomSnapshot
                    {
                        status         = snapshotData.snapshot.status,
                        gameId         = snapshotData.snapshot.gameId,
                        currentMap     = snapshotData.snapshot.currentMap,
                        maxPlayers     = snapshotData.snapshot.maxPlayers,
                        waitingPlayers = snapshotData.snapshot.waitingPlayers,
                        roundTime      = snapshotData.snapshot.roundTime,
                        gameMode       = snapshotData.snapshot.gameMode,
                        mapId          = playersOnServerData.map,
                        modeId         = playersOnServerData.mapMode,
                        team1Tickets   = new modeCounter
                        {
                            tickets    = team1Tickets,
                            ticketsMax = team1TicketsMax
                        },
                        team2Tickets = new modeCounter
                        {
                            tickets    = team2Tickets,
                            ticketsMax = team2TicketsMax
                        },
                        teamInfo = new CustomSnapshotTeamInfo
                        {
                            team0 = new CustomSnapshotTeam
                            {
                                faction = snapshotData.snapshot.teamInfo.Team0.faction,
                                player  = team0Data
                            },
                            team1 = new CustomSnapshotTeam
                            {
                                faction = snapshotData.snapshot.teamInfo.Team1.faction,
                                player  = team1Data
                            },
                            team2 = new CustomSnapshotTeam
                            {
                                faction = snapshotData.snapshot.teamInfo.Team2.faction,
                                player  = team2Data
                            }
                        }
                    }
                };
            }
            catch (Exception ex)
            {
                Classes.Logger.addLog(ex.ToString());
            }



            return(snapshotSend);
        }