public override List <DigimonType> GetDigimonTypes() { List <DigimonType> dTypes = new List <DigimonType>(); string html = DownloadContent(STR_URL_MERC_SIZE_RANK_MAIN); HtmlDocument doc = new HtmlDocument(); HtmlNode.ElementsFlags.Remove("option"); doc.LoadHtml(html); HtmlNode selectTypes = doc.GetElementbyId("drpDigimon"); foreach (HtmlNode type in selectTypes.ChildNodes) { if (!"option".Equals(type.Name)) { continue; } DigimonType dType = new DigimonType() { Code = Convert.ToInt32(type.Attributes["value"].Value), Name = type.InnerText }; dTypes.Add(dType); if (LogManager != null) { LogManager.DebugFormat("Found {0}", dType); } } return(dTypes); }
public void AddOrUpdateDigimonType(DigimonType type, bool isKorean) { DigimonType ordinal = Context.DigimonTypes.FirstOrDefault(e => e.Code == type.Code); if (ordinal == null) { if (isKorean) { type.NameKorean = type.Name; type.SearchKDMO = PrepareDigimonSearch(type.Name); } else { type.SearchGDMO = PrepareDigimonSearch(type.Name); } Context.DigimonTypes.Add(type); return; } if (isKorean) { ordinal.NameKorean = type.Name; ordinal.SearchKDMO = PrepareDigimonSearch(type.Name); } else { ordinal.SearchGDMO = PrepareDigimonSearch(type.Name); } }
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); }
private void UpdateModel() { IsLoadingAnim(true); using (IDatabaseContext context = DatabaseManager.CreateContext()) { if (!IsStatic && Guild != null) { //Если не статическое, получаем рандомного дигимона из базы данных Brush MedalColor = null; Digimon d = null; Tamer tamer = null; if (TamerName != null) { if (!string.IsNullOrEmpty(TamerName.Trim())) { tamer = context.FindTamerByGuildAndName(Guild, TamerName.Trim()); } } if (tamer != null) { d = context.FindRandomDigimon(tamer, MIN_LVL); } if (d == null) { d = context.FindRandomDigimon(Guild, MIN_LVL); } if (d == null) { // если у нас нет вообще такого дигимона, тогда переключаемся на статику IsStatic = true; UpdateModel(); return; } //Устанавливаем медали в зависимости от уровня if (d.Level < 75) { MedalColor = medalBronze; } else if (d.Level >= 75 && d.Level < 80) { MedalColor = medalSilver; } else if (d.Level >= 80) { MedalColor = medalGold; } this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new UpdateInfo((DType_, Level_, TName_, TLevel_, Image_, Medal_) => { RotationElement vmodel = null; if (this.Content != null && !this.Content.GetType().IsAssignableFrom(typeof(HaguruLoader))) { vmodel = tempRotationElement; tempRotationElement = (RotationElement)this.Content; } if (vmodel == null) { vmodel = new RotationElement(); } vmodel.DType = DType_; vmodel.Level = Level_; vmodel.TName = string.Format(TAMER_NAME_FORMAT, LanguageManager.Model.RotationTamer, TName_, TLevel_); vmodel.TLevel = TLevel_; vmodel.Image = Image_; vmodel.Medal = Medal_; vmodel.ShowInfo = true; this.Content = vmodel; }), d.Name, d.Level, d.Tamer.Name, d.Tamer.Level, GetDigimonImage(d.Type.Code), MedalColor); } else { DigimonType dType = context.FindRandomDigimonType(); this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new UpdateInfo((DType_, Level_, TName_, TLevel_, Image_, Medal_) => { RotationElement vmodel = null; if (this.Content != null && !this.Content.GetType().IsAssignableFrom(typeof(HaguruLoader))) { vmodel = tempRotationElement; tempRotationElement = (RotationElement)this.Content; } if (vmodel == null) { vmodel = new RotationElement(); } vmodel.Image = Image_; vmodel.ShowInfo = false; this.Content = vmodel; }), string.Empty, 0, string.Empty, 0, GetDigimonImage(dType.Code), null); } } IsLoadingAnim(false); }