mirror of
https://github.com/ryzij/Cube-Tower-Defense.git
synced 2026-07-14 10:06:58 +00:00
40 lines
1.0 KiB
C#
40 lines
1.0 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class SpawnDeathEnemyController : MonoBehaviour
|
|
{
|
|
[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);
|
|
}
|
|
} |