Ejemplo n.º 1
0
        public static List <BuildingCurrently> CurrentlyBuilding(HtmlAgilityPack.HtmlDocument htmlDoc, Account acc)
        {
            var finishButton = htmlDoc.DocumentNode.Descendants("div").FirstOrDefault(x => x.HasClass("finishNow"));

            if (finishButton == null)
            {
                return(null);
            }
            var ret = new List <BuildingCurrently>();

            foreach (var row in finishButton.ParentNode.Descendants("li").ToList())
            {
                var duration = TimeParser.ParseTimer(row);
                var nameArr  = row.Descendants("div").FirstOrDefault(x => x.HasClass("name")).InnerText.Split('\t'); //[1].Trim();

                var    levelStr = row.Descendants("span").FirstOrDefault(x => x.HasClass("lvl")).InnerText;
                string name     = nameArr.FirstOrDefault(x => !string.IsNullOrEmpty(x.Replace("\r", "").Replace("\n", "")));
                switch (acc.AccInfo.ServerVersion)
                {
                case Classificator.ServerVersionEnum.T4_4:
                    name = name.Replace(levelStr, "");
                    break;
                }
                var lvl = Parser.RemoveNonNumeric(levelStr);

                ret.Add(new BuildingCurrently()
                {
                    Duration = DateTime.Now.Add(duration),
                    Level    = (byte)lvl,
                    Building = Localizations.BuildingFromString(name, acc)
                });
            }
            return(ret);
        }
        public static List <BuildingCurrently> CurrentlyBuilding(HtmlAgilityPack.HtmlDocument htmlDoc)
        {
            var finishButton = htmlDoc.DocumentNode.Descendants("div").FirstOrDefault(x => x.HasClass("finishNow"));

            if (finishButton == null)
            {
                return(null);
            }
            var ret = new List <BuildingCurrently>();

            foreach (var row in finishButton.ParentNode.Descendants("li").ToList())
            {
                var duration = TimeParser.ParseTimer(row);
                var name     = row.Descendants("div").FirstOrDefault(x => x.HasClass("name")).InnerText.Split('\n')[1].Trim();
                var lvl      = Parser.RemoveNonNumeric(row.Descendants("span").FirstOrDefault(x => x.HasClass("lvl")).InnerText);

                ret.Add(new BuildingCurrently()
                {
                    Duration = DateTime.Now.Add(duration),
                    Level    = (byte)lvl,
                    Building = Localizations.BuildingFromString(name)
                });
            }
            return(ret);
        }
Ejemplo n.º 3
0
        private int?BuildingToDemolish(Village vill, HtmlDocument htmlDoc)
        {
            if (vill.Build.DemolishTasks.Count == 0)
            {
                return(null);
            }

            var task = vill.Build.DemolishTasks.FirstOrDefault();

            var building = htmlDoc.GetElementbyId("demolish").ChildNodes
                           .FirstOrDefault(x =>
                                           x.GetAttributeValue("value", "") == task.BuildingId.ToString()
                                           );

            //If this building doesn't exist or is below/on the correct level, find next building to demolish
            if (building == null)
            {
                vill.Build.DemolishTasks.Remove(task);
                return(BuildingToDemolish(vill, htmlDoc));
            }
            //TODO: get name of the building you are destroying. localization.
            var option         = building.InnerText;
            var lvl            = option.Split(' ').LastOrDefault();
            var buildingName   = Parser.RemoveNumeric(option.Split('.')[1]).Trim();
            var optionBuilding = Localizations.BuildingFromString(buildingName);

            if (int.Parse(lvl) <= task.Level || optionBuilding != task.Building)
            {
                vill.Build.DemolishTasks.Remove(task);
                return(BuildingToDemolish(vill, htmlDoc));
            }
            return(task.BuildingId);
        }