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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }