58 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |