private void FillWithType(int weight, ItemDropTypes type) { for (int i = 0; i < weight; i++) { ItemDropQueue.Add(type); } }
/// <summary> /// Generate items drops - varies level and choose an amount based on a range /// </summary> public List <ItemSave> GenerateItemDrops(int level, Vector2Int dropRange) { List <ItemSave> items = new List <ItemSave>(); List <int> chestSlots = new List <int>(); for (int i = 0; i < ChestInventory.instance.chestSlots.Count; i++) { chestSlots.Add(i); } int amount = Random.Range(dropRange.x, dropRange.y + 1); for (int i = 0; i < amount; i++) { int index = Random.Range(0, ItemDropQueue.Count); ItemDropTypes itemType = ItemDropQueue[index]; ItemDropQueue.Remove(itemType); int randomLevel = Mathf.Clamp(level + Random.Range(-1, 2), 1, 30); int randomSlot = chestSlots[Random.Range(0, chestSlots.Count)]; chestSlots.Remove(randomSlot); ItemSave item; switch (itemType) { case ItemDropTypes.RareArtifact: item = new ItemSave(new ItemStack(GetRandomItemByLevel(randomLevel + 5, artifacts), 1), randomSlot); break; case ItemDropTypes.Equipment: item = new ItemSave(new ItemStack(GetRandomItemByLevel(randomLevel, equipment), 1), randomSlot); break; default: item = new ItemSave(new ItemStack(GetRandomItemByLevel(randomLevel, artifacts), 1), randomSlot); break; } items.Add(item); if (ItemDropQueue.Count == 0) { FillItemDropQueue(); } } return(items); }