Ejemplo n.º 1
0
        /// <summary>
        /// Diese Methode wird aufgerufen, wenn der ReconnectDatabaseCommand gestartet wird
        /// </summary>
        private void RebuildWeaponDatabaseExecute()
        {
            var dbService = ServiceLocator.Current.GetInstance <IDatabaseService>();
            var conn      = dbService.GetDbConnection();

            //Spells
            var spells = GetSpellsContent(conn);

            SpellService.WriteSpells(spells);



            var query  = "SELECT * FROM item_template";
            var cmd    = new MySqlCommand(query, conn.Connection);
            var result = new List <Item>();

            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    var itemClass     = reader.GetInt32("class");
                    var itemSubClass  = reader.GetInt32("subclass");
                    var inventoryType = reader.GetInt32("InventoryType");
                    var quality       = reader.GetInt32("Quality");
                    if (itemClass != 2 && itemClass != 4)
                    {
                        continue;
                    }
                    if (itemClass == 2 && (itemSubClass != 2 && itemSubClass != 3 && itemSubClass != 4 && itemSubClass != 7 && itemSubClass != 13 && itemSubClass != 15 && itemSubClass != 18))
                    {
                        continue;
                    }
                    if (itemClass == 4 && (inventoryType == 0 || inventoryType == 4 || inventoryType == 14 || inventoryType == 17 || inventoryType == 18 || inventoryType == 19 || inventoryType == 20 || inventoryType >= 23))
                    {
                        continue;
                    }
                    if (quality != 3 && quality != 4 && quality != 5)
                    {
                        continue;
                    }
                    var item = new Item
                    {
                        ItemIdent    = reader.GetInt32("entry"),
                        DisplayIdent = reader.GetInt32("displayid"),
                        Name         = reader.GetString("Name"),
                        Speed        = reader.GetInt32("delay"),
                        Quality      = (ItemConstants.Quality)quality,
                        WeaponClass  = itemClass != 2 ? 0 : (ItemConstants.WeaponClass)itemSubClass,
                        Type         = itemClass != 2 ? (ItemConstants.ItemType)inventoryType : (inventoryType == 15 || inventoryType == 26 ? ItemConstants.ItemType.Ranged : (ItemConstants.ItemType)inventoryType)
                    };

                    //DMG
                    if (item.IsWeapon())
                    {
                        item.DmgMin = reader.GetInt32("dmg_min1");
                        item.DmgMax = reader.GetInt32("dmg_max1");
                    }

                    GetStats(item, reader);
                    result.Add(item);
                }
            }
            GetSpells(result, spells);
            var items = ItemService.WriteItems(result);


            XmlSerializer <List <Item> > .ExportToXml(result, "Items");

            ItemService.ResetCache();
            dbService.ConnectionChange?.Invoke();
        }