using System; using System.Collections; using System.Collections.Generic; using BITFALL.Scene; using BITKit; using Unity.Mathematics; using UnityEngine; namespace BITFALL.Scenes { [Serializable] public class PlayerSpawnPointSingleton : SpawnPointServiceImplement { protected override ISpawnPointService _spawnPointServiceImplementation=>PlayerSpawnPointService.Singleton; } public class PlayerSpawnPointService : MonoBehaviour,ISpawnPointService { internal static ISpawnPointService Singleton { get; private set; } internal static readonly List _spawnPoints=new(); internal static readonly Queue _spawnPointQueue=new(); private static int offset; public static float4x4 RequestSpawnPoint(params object[] tags) { offset++; if(offset>_spawnPoints.Count-1)offset=0; return _spawnPoints[offset].GetSpawnPoint(); // if (_spawnPointQueue.Count is not 0) return _spawnPointQueue.Dequeue(); // var list = new List(_spawnPoints); // for (var i = 0; i < list.Count; i++) // { // var random = _spawnPoints.Random(); // // list.Remove(random); // // _spawnPointQueue.Enqueue(random.GetSpawnPoint()); // } // return _spawnPointQueue.Dequeue(); } private void Awake() { Singleton = this; } private void OnDestroy() { _spawnPointQueue.Clear(); } float4x4 ISpawnPointService.RequestSpawnPoint(params object[] tags)=>RequestSpawnPoint(tags); } }