public L4D2Map(XmlElement data)
        {
            string imgurl = data.GetInnerText("img");
            ID = imgurl.Substring(0, imgurl.LastIndexOf('/') -4);
            Name = data.GetInnerText("name");
            Played = data.GetInnerText("hasPlayed").Equals("1");

            if (Played) {
                BestTime = float.Parse(data.GetInnerText("besttimemilliseconds")) / 1000;

                ItemsUsed = new L4D2Items(data);

                InfectedKilled = new L4D2Infected(data);

                List<SteamID> teammateList = new List<SteamID>();
                foreach (XmlElement teammate in data.GetXmlElement("teammates")) {
                    teammateList.Add(SteamID.Create(long.Parse(teammate.InnerText), false));
                }
                Teammates = teammateList.ToArray();

                Medal = MedalFrom(data.GetInnerText("medal"));
            }
        }
        public L4D2ScavengeStats(XmlElement data)
        {
            AverageCansPerRound = float.Parse(data.GetInnerText("avgcansperround"));
            PerfectRounds       = int.Parse(data.GetInnerText("perfect16canrounds"));
            RoundsLost          = int.Parse(data.GetInnerText("roundslost"));
            RoundsPlayed        = int.Parse(data.GetInnerText("roundsplayed"));
            RoundsWon           = int.Parse(data.GetInnerText("roundswon"));
            TotalCans           = int.Parse(data.GetInnerText("totalcans"));

            List<L4D2ScavengeMapStats> mapList = new List<L4D2ScavengeMapStats>();
            foreach (XmlElement map in data.GetXmlElement("mapstats")) {
                mapList.Add(new L4D2ScavengeMapStats(map));
            }
            MapStats = mapList.ToArray();
        }
        public DefenseGridTower(XmlElement data)
        {
            Class = data.Name;
            Level = int.Parse(data.GetAttribute("level"));

            Built  =   int.Parse(data.GetValueText("built"));
            if (data.GetXmlElement("damage") != null) {
                HasDamage = true;
                Damage = float.Parse(data.GetValueText("damage"));
            }
        }