39 lines
1.2 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace CharacterSystem
{
[CreateAssetMenu(fileName = "ReplicasSet", menuName = "Scriptable Objects/ReplicasSet")]
public class ReplicasSet : ScriptableObject
{
public GameEvent type;
[field: SerializeField, Range(0, 1)] public float playProbability { get; } = 1f;
[SerializeField] private List<Replica> _referenceList;
private List<Replica> _currentPool;
public Replica GetNext()
{
if (_currentPool.Count == 0) Refill();
Replica item = _currentPool[^1]; // Берем последний элемент
_currentPool.RemoveAt(_currentPool.Count - 1);
return item;
}
public void Refill()
{
_currentPool = new List<Replica>(_referenceList);
Shuffle(_currentPool);
}
private void Shuffle(List<Replica> list)
{
for (int i = 0; i < list.Count; i++)
{
int randomIndex = Random.Range(i, list.Count);
(list[i], list[randomIndex]) = (list[randomIndex], list[i]);
}
}
}
}