CapersProject/Assets/02.Scripts/BlueWater/Item/ItemDropTable.cs
2025-02-03 19:03:41 +09:00

46 lines
1.2 KiB
C#

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<DropItem> DropItems { get; set; } = new();
private List<ItemSlot> _itemSlots;
public ItemDropTable(CharacterData characterData)
{
CharacterData = characterData;
}
public List<ItemSlot> GetDroppedItemList()
{
_itemSlots = new List<ItemSlot>();
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));
}
}
}