Azmyth.Assets.Item.Generate C# (CSharp) Метод

Generate() публичный статический Метод

public static Generate ( ItemClass itemClass = ItemClass.Any, Rarity rarity = Rarity.Any, Quality quality = Quality.Any, MaterialClass materialClass = MaterialClass.Any, MaterialType materialType = MaterialType.Any ) : Item
itemClass ItemClass
rarity Rarity
quality Quality
materialClass MaterialClass
materialType MaterialType
Результат Item
        public static Item Generate(ItemClass itemClass = ItemClass.Any, Rarity rarity = Rarity.Any, Quality quality = Quality.Any, MaterialClass materialClass = MaterialClass.Any, MaterialType materialType = MaterialType.Any)
        {
            Item item = new Item();

            if (rarity == Rarity.Any)
            {
                double rarityPercent = Azmyth.Numbers.Percent() * 100;

                rarity = Rarity.None;

                for (int i = (int)Rarity.None; i < (int)Rarity.Max; i++)
                {
                    if ((float)rarityPercent >= ItemTables.RarityDropChances[i])
                        rarity++;
                }

                 rarity--;
            }

            item.Rarity = rarity;

            if (quality == Quality.Any)
            {
                double qualityPercent = Azmyth.Numbers.Percent() * 100;

                quality = Quality.Poor;

                for (int i = (int)Quality.Poor; i < (int)Quality.Max; i++)
                {
                    if ((float)qualityPercent >= ItemTables.QualityDropChances[i])
                        quality++;
                }

                quality--;
            }

            item.Quality = quality;

            if (materialClass == MaterialClass.Any)
            {
                double materialTypePercent = Azmyth.Numbers.Percent() * 100;

                materialClass = MaterialClass.None;

                for (int i = (int)MaterialClass.None; i < (int)MaterialClass.Max; i++)
                {
                    if ((float)materialTypePercent >= ItemTables.MaterialTypeDropChances[i])
                        materialClass++;
                }

                materialClass--;
            }

            item.MaterialClass = materialClass;

            if (materialType == MaterialType.Any)
            {
                double materialPercent = Azmyth.Numbers.Percent() * 100;

                materialType = MaterialType.Cloth;
                var materials = ItemTables.Materials.Values.Where(i => i.MaterialType == item.MaterialClass);

                foreach (Material m in materials)
                {
                    if ((float)materialPercent >= m.DropMod)
                        materialType = m.MaterialID;
                }
            }

            item.MaterialType = materialType;

            if (itemClass == ItemClass.Any)
            {
                double itemTypePercent = Azmyth.Numbers.Percent() * 100;

                itemClass = ItemClass.None;

                for (int i = (int)ItemClass.None; i < (int)ItemClass.Max; i++)
                {
                    if ((float)itemTypePercent >= ItemTables.ItemTypeDropChances[i])
                        itemClass++;
                }

                itemClass--;
            }

            item.ItemClass = itemClass;

            var itemTypes = ItemTables.ItemTypes.Where(i => i.ItemClass == item.ItemClass);

            int num = Numbers.NumberRange(0, itemTypes.Count<ItemType>()-1);
            int count = 0;

            foreach(ItemType t in itemTypes)
            {
                if(count == num)
                {
                    item.ItemType = t;
                    break;
                }

                count++;
            }

            string[] names = item.ItemType.Names.Split('|');

            num = Numbers.NumberRange(0, names.Count<string>()-1);

            item.Name = quality + " quality " + rarity +" " + materialType + " " + names[num];

            item.Name = Azmyth.Strings.Article(item.Name) + " " + item.Name;

            return item;
        }