OldBlueWater/BlueWater/Assets/02.Scripts/Item/DropItemTable.cs

58 lines
2.1 KiB
C#

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<ItemInstance> 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<DropItemController>().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<DropItemController>().Init(element, dropCount);
}
}
}
}