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 _referenceList; private List _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(_referenceList); Shuffle(_currentPool); } private void Shuffle(List list) { for (int i = 0; i < list.Count; i++) { int randomIndex = Random.Range(i, list.Count); (list[i], list[randomIndex]) = (list[randomIndex], list[i]); } } } }