/// <summary> /// Parses the her home village href /// </summary> /// <param name="htmlDoc">Html</param> /// <returns>Hero's home village href id</returns> public static int?GetHeroVillageHref(HtmlDocument htmlDoc) { var node = htmlDoc.GetElementbyId("attributes"); if (node == null) { node = htmlDoc.GetElementbyId("content"); } if (node == null) { return(null); } return(MapParser.GetKarteHref(node)); }
/// <summary> /// Parse troops from the overview tab inside the rally point /// </summary> public static List <TroopsMovementRallyPoint> ParseTroopsOverview(Account acc, HtmlDocument html) { var ret = new List <TroopsMovementRallyPoint>(); var attacks = html.DocumentNode.Descendants("table").Where(x => x.HasClass("troop_details")); if (attacks == null) { return(ret); } var now = TimeParser.GetServerTime(html); foreach (var attackNode in attacks) { var attack = new TroopsMovementRallyPoint(); var movementClass = attackNode.GetClasses().FirstOrDefault(x => x != "troop_details"); attack.MovementType = ParseMovementClass(movementClass); // If attack.Troops.Sum() is less than 11, we are able to view troop types attacking attack.Troops = ParseIncomingTroops(attackNode); var infos = attackNode.Descendants("tbody").FirstOrDefault(x => x.HasClass("infos")); attack.Arrival = now.Add(TimeParser.ParseTimer(infos)); var sourceId = MapParser.GetKarteHref(attackNode.Descendants("td").First(x => x.HasClass("role"))); attack.SourceCoordinates = MapHelper.CoordinatesFromKid(sourceId, acc); var targetId = MapParser.GetKarteHref(attackNode.Descendants("td").First(x => x.HasClass("troopHeadline"))); attack.TargetCoordinates = MapHelper.CoordinatesFromKid(targetId, acc); var unitImg = attackNode.Descendants("img").First(x => x.HasClass("unit")); var unitInt = Parser.RemoveNonNumeric(unitImg.GetClasses().First(x => x != "unit")); int tribeInt = (int)(unitInt / 10); // ++ since the first element in Classificator.TribeEnum is Any, second is Romans. tribeInt++; attack.Tribe = ((Classificator.TribeEnum)tribeInt); ret.Add(attack); } return(ret); }