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); }
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); }