public WaveManager(IEnemyGenerator enemyGenerator, WaveConfiguration[] waveConfigurations, CoroutinesWrapper coroutinesWrapper, SignalBus bus)
        {
            this.enemyGenerator     = enemyGenerator;
            this.waveConfigurations = waveConfigurations;
            this.coroutinesWrapper  = coroutinesWrapper;

            bus.Subscribe <EnemyState.EnemyHealthChanged>(this.OnEnemyHealthChanged);
        }
        public SpawnManager(IEnemyGenerator enemyGenerator, CoroutinesWrapper coroutinesWrapper)
        {
            this.spawnPoints = GameObject.FindGameObjectsWithTag(SpawnPointTag).Select(g => g.transform).ToArray();
            this.spawnQueue  = new Queue <GameObject>();
            coroutinesWrapper.StartCoroutine(this.WaitForSpawn());

            this.enemyGenerator = enemyGenerator;
        }