コード例 #1
0
        /// <summary>
        /// Retrieves note information for hunting horns.
        /// </summary>
        /// <param name="notes">An array of ints corresponding to the horn's note values.</param>
        /// <param name="sword_id">The ID of the hunting horn in the database.</param>
        /// <returns>Returns a hunting horn object.</returns>
        public HuntingHorn GetHuntingHorn(int[] notes, int sword_id)
        {
            string notestring = "";

            foreach (int note in notes)
            {
                switch (note)
                {
                case 1:
                    notestring += "white ";
                    break;

                case 2:
                    notestring += "purple ";
                    break;

                case 3:
                    notestring += "red ";
                    break;

                case 4:
                    notestring += "blue ";
                    break;

                case 5:
                    notestring += "green ";
                    break;

                case 6:
                    notestring += "yellow ";
                    break;

                case 7:
                    notestring += "light_blue ";
                    break;
                }
            }
            notestring = notestring.Trim().Replace(" ", ", ");
            HuntingHorn horn = new HuntingHorn()
            {
                sword_id = sword_id,
                notes    = notestring
            };

            return(horn);
        }
コード例 #2
0
        /// <summary>
        /// Retrieves weapon information for all blademaster weapons.
        /// </summary>
        /// <param name="address">The URL of the weapon.</param>
        /// <param name="notes">If the weapon is a hunting horn, this is the int array containing the note information.</param>
        public async Task GetBlademasterWeapon(string address, int[] notes = null)
        {
            try {
                var config  = Configuration.Default.WithDefaultLoader(l => l.IsResourceLoadingEnabled = true).WithCss();
                var context = BrowsingContext.New(config);
                var page    = await context.OpenAsync(address);

                string[] flav = Weapons.GetFlavorText(page);

                var crafting_table    = page.QuerySelectorAll(".table")[1].QuerySelector("tbody");
                int current_wpn_index = 0;
                foreach (var tr in page.QuerySelector(".table").QuerySelectorAll("tr"))
                {
                    SwordValues sv = await GetSwordAttributes(page, tr, crafting_table, current_wpn_index);

                    List <SharpnessValue> sharpvalues = GetSharpness(tr);
                    await db.InsertAllAsync(sharpvalues);

                    sv.sharp_0_id     = sharpvalues[0].sharp_id;
                    sv.sharp_1_id     = sharpvalues[1].sharp_id;
                    sv.sharp_2_id     = sharpvalues[2].sharp_id;
                    sv.sword_set_name = flav[0];
                    sv.description    = sv.sword_name.Contains(flav[0]) ? flav[2] : flav[3];
                    bool already_inserted = false;
                    if (address.Contains("/greatsword/"))
                    {
                        sv.sword_class = "Great Sword";
                    }
                    else if (address.Contains("/longsword/"))
                    {
                        sv.sword_class = "Long Sword";
                    }
                    else if (address.Contains("/swordshield/"))
                    {
                        sv.sword_class = "Sword & Shield";
                    }
                    else if (address.Contains("/hammer/"))
                    {
                        sv.sword_class = "Hammer";
                    }
                    else if (address.Contains("/lance/"))
                    {
                        sv.sword_class = "Great Sword";
                    }
                    else if (address.Contains("/insectglaive/"))
                    {
                        sv.sword_class = "Insect Glaive";
                    }
                    else if (address.Contains("/dualblades/"))
                    {
                        sv.sword_class = "Dual Blades";
                    }
                    else if (spblade_weapons.Any(b => address.Contains(b)))
                    {
                        if (address.Contains("/chargeblade/"))
                        {
                            sv.sword_class = "Charge Blade";
                        }
                        else if (address.Contains("/switchaxe/"))
                        {
                            sv.sword_class = "Switch Axe";
                        }
                        else if (address.Contains("/gunlance/"))
                        {
                            sv.sword_class = "Gunlance";
                        }
                        await db.InsertAsync(sv);

                        already_inserted = true;

                        string             phialtype = GetPhialType(tr, sv.sword_class);
                        PhialOrShellWeapon weapon    = new PhialOrShellWeapon()
                        {
                            sword_id            = sv.sword_id,
                            phial_or_shell_type = phialtype
                        };
                        await db.InsertAsync(weapon);
                    }
                    else if (address.Contains("/huntinghorn/") && notes != null)
                    {
                        sv.sword_class = "Hunting Horn";
                        await db.InsertAsync(sv);

                        already_inserted = true;

                        HuntingHorn horn = GetHuntingHorn(notes, sv.sword_id);
                        await db.InsertAsync(horn);
                    }
                    if (!already_inserted)
                    {
                        try {
                            await db.InsertAsync(sv);
                        }
                        catch (SQLiteException) {
                            ConsoleWriters.ErrorMessage($"{sv.sword_name} is already in the database!");
                        }
                    }


                    List <CraftItem> craftitems = Weapons.GetCraftItems(crafting_table.Children[current_wpn_index]);
                    foreach (CraftItem item in craftitems)
                    {
                        item.creation_id   = sv.sword_id;
                        item.creation_type = "Blademaster";
                    }
                    foreach (ElementDamage element in sv.element)
                    {
                        element.weapon_id = sv.sword_id;
                    }
                    await db.InsertAllAsync(sv.element);

                    await db.InsertAllAsync(craftitems);

                    current_wpn_index++;
                }
            }
            catch (Exception ex) {
                ConsoleWriters.ErrorMessage(ex.ToString());
                await GetBlademasterWeapon(address, notes);
            }
        }