CapersProject/Assets/02.Scripts/Item/ItemDropTable.cs

46 lines
1.2 KiB
C#
Raw Normal View History

2024-06-03 18:26:03 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;
namespace BlueWater.Items
{
[Serializable]
public class ItemDropTable
2024-06-03 18:26:03 +00:00
{
[field: SerializeField]
public CharacterData CharacterData { get; set; }
// ItemDropTableScriptableObject 클래스에서 생성되기 떄문에 new() 필수
2024-06-03 18:26:03 +00:00
[field: SerializeField]
public List<DropItem> DropItems { get; set; } = new();
private List<ItemSlot> _itemSlots;
public ItemDropTable(CharacterData characterData)
{
CharacterData = characterData;
}
2024-06-03 18:26:03 +00:00
public List<ItemSlot> GetDroppedItemList()
{
_itemSlots = new List<ItemSlot>();
2024-06-03 18:26:03 +00:00
foreach (var element in DropItems)
{
CheckAndAddItem(element);
}
return _itemSlots;
2024-06-03 18:26:03 +00:00
}
private void CheckAndAddItem(DropItem dropItem)
2024-06-03 18:26:03 +00:00
{
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));
2024-06-03 18:26:03 +00:00
}
}
}