using System; using System.Collections.Generic; using MedievalParty.Core; using UnityEngine; namespace MedievalParty.Map.States { public class MapManager_SpawnState: IState { public event EventHandler onSpawnOver; private readonly List _spawnPoints; private readonly GameObject _tmp; private readonly float _delayBeforeFirstSpawn; private readonly float _delayBetweenSpawn; private float _delay; private int _index; public MapManager_SpawnState(List spawnPoints, GameObject tmp, float delayBeforeFirstSpawn, float delayBetweenSpawn) { _spawnPoints = spawnPoints; _tmp = tmp; _delayBeforeFirstSpawn = delayBeforeFirstSpawn; _delayBetweenSpawn = delayBetweenSpawn; } public void OnEnter() { _delay = _delayBeforeFirstSpawn; _index = 0; } public void OnExit() { } public void OnUpdate() { _delay -= Time.deltaTime; if (_delay <= 0) { GameObject.Instantiate(_tmp, _spawnPoints[_index].position, Quaternion.identity); _delay = _delayBetweenSpawn; _index ++; if(_index >= _spawnPoints.Count) onSpawnOver?.Invoke(this, EventArgs.Empty); } } } }