55 lines
1.7 KiB
C#
55 lines
1.7 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 CharacterListSO _characterList;
|
|
private readonly CharacterObject _characterPrefab;
|
|
|
|
private readonly List<Transform> _spawnPoints;
|
|
private readonly float _delayBeforeFirstSpawn;
|
|
private readonly float _delayBetweenSpawn;
|
|
|
|
private float _delay;
|
|
private int _index;
|
|
|
|
public MapManager_SpawnState(CharacterListSO characterList, CharacterObject characterPrefab, List<Transform> spawnPoints, float delayBeforeFirstSpawn, float delayBetweenSpawn)
|
|
{
|
|
_characterList = characterList;
|
|
_characterPrefab = characterPrefab;
|
|
_spawnPoints = spawnPoints;
|
|
_delayBeforeFirstSpawn = delayBeforeFirstSpawn;
|
|
_delayBetweenSpawn = delayBetweenSpawn;
|
|
}
|
|
|
|
public void OnEnter()
|
|
{
|
|
_delay = _delayBeforeFirstSpawn;
|
|
_index = 0;
|
|
}
|
|
public void OnExit() { }
|
|
|
|
public void OnUpdate()
|
|
{
|
|
_delay -= Time.deltaTime;
|
|
|
|
if (_delay <= 0)
|
|
{
|
|
CharacterObject obj = GameObject.Instantiate(_characterPrefab, _spawnPoints[_index].position, Quaternion.identity);
|
|
obj.SetCharacter(_characterList.Characters[_index]);
|
|
|
|
_delay = _delayBetweenSpawn;
|
|
_index ++;
|
|
|
|
if(_index >= _characterList.Characters.Count)
|
|
onSpawnOver?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
}
|
|
} |