mirror of
https://github.com/ryzij/Cube-Tower-Defense.git
synced 2026-07-14 01:56:57 +00:00
Добавил возможность отслеживать спавн и уничтожение врагов
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
public class SpawnDeathEnemyController : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private GameManager _gameManager;
|
||||
[SerializeField] private EnemySpawner _enemySpawner;
|
||||
[SerializeField] private Wallet _wallet;
|
||||
[SerializeField] private UnityEvent _onLastEnemyDestroyed;
|
||||
|
||||
public event UnityAction OnLastEnemyDestroyed
|
||||
{
|
||||
add => _onLastEnemyDestroyed.AddListener(value);
|
||||
remove => _onLastEnemyDestroyed.RemoveListener(value);
|
||||
}
|
||||
|
||||
private readonly List<Enemy> _enemies = new();
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_enemySpawner.OnEnemySpawned += OnEnemySpawned;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
_enemySpawner.OnEnemySpawned -= OnEnemySpawned;
|
||||
}
|
||||
|
||||
private void OnEnemySpawned(Enemy enemy)
|
||||
{
|
||||
enemy.OnDeath += e => _wallet.AddMoney(e.KillReward);
|
||||
enemy.OnDestroyed += () =>
|
||||
{
|
||||
_enemies.Remove(enemy);
|
||||
if (_enemies.Count == 0)
|
||||
_onLastEnemyDestroyed?.Invoke();
|
||||
};
|
||||
_enemies.Add(enemy);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user