using System.Collections; using System.Collections.Generic; using UnityEngine; using Sirenix.OdinInspector; namespace KairoEngine.Inventory { [System.Serializable] public class RandomItem { public ItemBase item; [Range(0, 100f)] public float probability = 5f; [MinMaxSlider(0, 1000, true)] public Vector2 quantity = new Vector2(1, 1); } public class RandomItems : MonoBehaviour { public bool addItems = true; [ShowInInspector] public ItemContainer itemContainer; public List items = new List(); void Start() { if(itemContainer == null) { Debug.LogError("Missing item container in RandomItems for " + gameObject.name); return; } if(addItems) { addItems = false; AddRandomItems(); } } private void AddRandomItems() { foreach (var item in items) { float dice = Random.Range(0, 101); if(dice <= item.probability) { AddItem(item); } } } private void AddItem(RandomItem item) { int quantity = Random.Range((int)item.quantity.x, ((int)item.quantity.y) + 1); if(item.item.category == ItemType.firearm) { ItemBaseFirearm itemBaseFirearm = (ItemBaseFirearm)item.item; ItemBaseAmmo itemBaseAmmo = (ItemBaseAmmo)itemBaseFirearm.ammoType; int ammo = itemBaseFirearm.ammoCapacity; ItemFirearmRef firearmRef = new ItemFirearmRef(itemBaseFirearm, quantity, itemBaseAmmo, ammo); itemContainer.AddItem(firearmRef); } else { ItemRef itemRef = new ItemRef(item.item, quantity, 10000); itemContainer.AddItem(itemRef); } } } }