using System.Collections; using System.Collections.Generic; using UnityEngine; public class WaveObserver : Singleton { private List _subjects = new List(); private LevelConfig _levelConfig; public LevelConfig LevelConfig { set { _levelConfig = value; } } private float[] _delay = {0,1,2,3,4,5}; private float _currentToughness = 0; private int _gameProgress = 0; private int _maxSync = 6; public void Attach(SpawnerTile spawnerSubject) { spawnerSubject.Prefab = _levelConfig.GetRandomSpawn().GetEnemyObject(); WaveUpdate(spawnerSubject); _subjects.Add(spawnerSubject); } public void NotifySpawned(SpawnerTile spawnerSubject) { if (spawnerSubject.Prefab.Equals(_levelConfig.ConstantSpawn[0].GetEnemyObject())) { int currentCount = _levelConfig.ConstantSpawn[0].Count; if (currentCount == 0) { foreach (SpawnerTile spawner in _subjects) { if (spawner.Prefab.Equals(spawnerSubject.Prefab)) { //spawner.SpawnSpeed = 0.0f; } } } } } public void WaveUpdate(SpawnerTile spawnerSubject) { //Lottery of order. Reducing maxSync increases the chances team spawning int spawningOrder = Random.Range(1, _maxSync); Debug.Log("Je suis " + spawningOrder + "e de la liste."); switch (spawningOrder) { case 1: spawnerSubject.SpawnSpeed = _levelConfig.GameDuration + _levelConfig.GameDuration * _delay[0]; break; case 2: spawnerSubject.SpawnSpeed = _levelConfig.GameDuration + _levelConfig.GameDuration * _delay[1]; break; case 3: spawnerSubject.SpawnSpeed = _levelConfig.GameDuration + _levelConfig.GameDuration * _delay[2]; break; case 4: spawnerSubject.SpawnSpeed = _levelConfig.GameDuration + _levelConfig.GameDuration * _delay[3]; break; case 5: spawnerSubject.SpawnSpeed = _levelConfig.GameDuration + _levelConfig.GameDuration * _delay[4]; break; case 6: spawnerSubject.SpawnSpeed = _levelConfig.GameDuration + _levelConfig.GameDuration * _delay[5]; break; } _gameProgress++; if(_gameProgress == _maxSync) { _maxSync--; _gameProgress = 0; } } }