using System.Collections.Generic; using System.Linq; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { [CreateAssetMenu(fileName = "DropItemTable", menuName = "ScriptableObjects/Item/DropItemTable")] public class DropItemTable : ScriptableObject { public List itemInstanceList = new(); // private ItemInstance PickItem() // { // var count = itemInstanceList.Count; // // if (count == 0) return null; // // var sumRatio = itemInstanceList.Sum(element => element.Probability); // var randomRatio = Random.Range(0, sumRatio); // // for (var i = 0; i < count; i++) // { // randomRatio -= itemInstanceList[i].Probability; // // if (randomRatio < 0) // { // return itemInstanceList[i]; // } // } // // return null; // } // // public void ItemDrop(Vector3 dropPosition) // { // var dropItem = PickItem(); // if (dropItem == null) return; // // var dropCount = Random.Range((int)dropItem.Count.x, (int)dropItem.Count.y + 1); // var instantiateItem = dropItem.Item.InstantiateItem(dropItem.prefab, dropPosition); // instantiateItem.GetComponentInChildren().Init(dropItem, dropCount); // } public void ItemDrop(Vector3 dropPosition) { foreach (var element in itemInstanceList) { var dropChance = Random.Range(0, 101); if (dropChance > element.Probability) continue; var dropCount = Random.Range((int)element.Count.x, (int)element.Count.y + 1); var instantiateItem = element.Item.InstantiateItem(element.prefab, dropPosition); instantiateItem.GetComponentInChildren().Init(element, dropCount); } } } }