AdvancedLauncher.Providers.Korea.KoreaWebProvider.GetDigimons C# (CSharp) Метод

GetDigimons() защищенный Метод

protected GetDigimons ( Tamer tamer, bool isDetailed ) : List
tamer AdvancedLauncher.SDK.Model.Entity.Tamer
isDetailed bool
Результат List
        protected override List<Digimon> GetDigimons(Tamer tamer, bool isDetailed)
        {
            if (LogManager != null) {
                LogManager.InfoFormat("Obtaining digimons for tamer \"{0}\"", tamer.Name);
            }
            List<Digimon> digimonList = new List<Digimon>();
            HtmlDocument doc = new HtmlDocument();

            string html = DownloadContent(string.Format(STR_URL_TAMER_POPPAGE, tamer.AccountId, tamer.Guild.Server.Identifier));
            doc.LoadHtml(html);

            //getting starter
            Digimon partner;
            try {
                partner = new Digimon() {
                    Tamer = tamer,
                    Name = ClearStr(doc.DocumentNode.SelectSingleNode("//div[1]//div[2]//div[2]//table[1]//tr[1]//td[2]//table[1]//tr[3]//td[2]//b").InnerText),
                    SizePc = 100
                };
            } catch {
                return digimonList;
            }

            DigimonType type = null;
            using (IDatabaseContext context = DatabaseManager.CreateContext()) {
                type = context.FindDigimonTypeBySearchKDMO(context.PrepareDigimonSearch(partner.Name));
            }
            if (type != null) {
                partner.Type = type;
                partner.Name = type.Name;
                partner.SizeCm = type.SizeCm;
            }
            digimonList.Add(partner);
            if (!GetStarterInfo(ref partner, tamer)) {
                if (LogManager != null) {
                    LogManager.ErrorFormat("Unable to obtain info about starter digimon \"{0}\" for tamer \"{1}\"", partner.Name, tamer.Name);
                }
            }

            HtmlNode mercList = doc.DocumentNode.SelectNodes("//table[@class='list']")[1];
            HtmlNodeCollection dlist = mercList.SelectNodes(".//tr");

            if (dlist != null) {
                using (IDatabaseContext context = DatabaseManager.CreateContext()) {
                    for (int i = 1; i < dlist.Count; i++) {
                        Digimon digimonInfo = new Digimon() {
                            Tamer = tamer,
                            Name = ClearStr(dlist[i].SelectSingleNode(".//td[1]").InnerText),
                            Level = Convert.ToByte(ClearStr(dlist[i].SelectSingleNode(".//td[2]//label").InnerText))
                        };

                        string rank = string.Empty;
                        foreach (char c in ClearStr(dlist[i].SelectSingleNode(".//td[3]//label").InnerText)) {
                            if (Char.IsDigit(c)) {
                                rank += c;
                            } else {
                                break;
                            }
                        }
                        digimonInfo.Rank = Convert.ToInt32(rank);
                        digimonInfo.Type = context.FindDigimonTypeBySearchKDMO(context.PrepareDigimonSearch(digimonInfo.Name));
                        if (digimonInfo.Type == null) {
                            continue;
                        }
                        digimonInfo.Name = digimonInfo.Type.Name;
                        digimonInfo.SizeCm = digimonInfo.Type.SizeCm;

                        if (digimonList.Count(d => d.Type.Equals(digimonInfo.Type)) == 0) {
                            if (isDetailed) {
                                if (!GetMercenaryInfo(ref digimonInfo, tamer)) {
                                    if (LogManager != null) {
                                        LogManager.ErrorFormat("Unable to obtain detailed data of digimon \"{0}\" for tamer \"{1}\"", digimonInfo.Name, tamer.Name);
                                    }
                                }
                            }
                            digimonList.Add(digimonInfo);
                            if (LogManager != null) {
                                LogManager.InfoFormat("Found digimon \"{0}\"", digimonInfo.Name);
                            }
                        }
                    }
                }
            }
            return digimonList;
        }