MedievalParty/Assets/Scripts/Map/States/MapManager_SpawnState.cs
2025-10-02 15:45:00 -04:00

51 lines
1.4 KiB
C#

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<Transform> _spawnPoints;
private readonly GameObject _tmp;
private readonly float _delayBeforeFirstSpawn;
private readonly float _delayBetweenSpawn;
private float _delay;
private int _index;
public MapManager_SpawnState(List<Transform> 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);
}
}
}
}