using System; using System.Collections.Generic; using UnityEngine; using Random = UnityEngine.Random; namespace BlueWater.Items { [Serializable] public class ItemDropTable { [field: SerializeField] public CharacterData CharacterData { get; set; } // ItemDropTableScriptableObject 클래스에서 생성되기 떄문에 new() 필수 [field: SerializeField] public List DropItems { get; set; } = new(); private List _itemSlots; public ItemDropTable(CharacterData characterData) { CharacterData = characterData; } public List GetDroppedItemList() { _itemSlots = new List(); foreach (var element in DropItems) { CheckAndAddItem(element); } return _itemSlots; } private void CheckAndAddItem(DropItem dropItem) { var dropChance = Random.Range(0, 101); if (dropChance > dropItem.DropRate) return; var randomCount = Random.Range(dropItem.QuantityMin, dropItem.QuantityMax + 1); _itemSlots.Add(new ItemSlot(dropItem.ItemIdx, randomCount)); } } }