public override void Update(GameTime gameTime) { switch (SpawnStates) { case SpawnStates.Spawn: ScoreManager.Level++; SpawnZombies(ScoreManager.Level); this.SpawnStates = SpawnStates.SpawnCoolDown; CoolDownTimer = 1000 + ScoreManager.Level * 200; break; case SpawnStates.SpawnCoolDown: if (CoolDownTimer <= 0 || zombieManager.Zombies.Count == 0) { this.SpawnStates = SpawnStates.SpawnedZombies; } else { CoolDownTimer--; } break; case SpawnStates.SpawnedZombies: if (zombieManager.Zombies.Count == 0) { this.SpawnStates = SpawnStates.Spawn; } break; } base.Update(gameTime); }
public ZombieSpawner(Game game, ZombieManager ZombieManager) : base(game) { zombieManager = ZombieManager; CoolDownTimer = 0; SpawnStates = SpawnStates.SpawnedZombies; Random = new Random(); Random4 = new Random(); }
IEnumerator SpawnWave(Wave _wave) { Debug.Log("Spawnando Onda: " + _wave.name); state = SpawnStates.Spawning; for (int i = 0; i < _wave.amount; i++) { SpawnZombie(_wave.zombie); livingEnemies++; yield return(new WaitForSeconds(1f / _wave.rate)); } state = SpawnStates.Waiting; yield break; }
IEnumerator SpawnWave(Wave wave) { spawnState = SpawnStates.SPAWNING; for (int i = 0; i < wave.count; i++) { GameObject enemy = wave.enemies[Random.Range(0, wave.enemies.Count)]; SpawnEnemy(enemy); yield return(new WaitForSeconds(1f / wave.rate)); } spawnState = SpawnStates.WAITING; yield break; }
void Start() { state = SpawnStates.COUNTING; Invoke("StartCountdown", timeToStartFirstWave); if (File.Exists(Application.persistentDataPath + "/rbSave.bp")) { for (int i = 0; i < waves.Length; i++) { if (waves[i].name == SaveLoad.saveGame.data.waveName) { nextWave = i - 1; } } } GameObject.FindGameObjectWithTag("Player").GetComponent <Health>().OnDeath().AddListener(DisableObject); }
void WaveCompleted() { Debug.Log("Onda Completada"); state = SpawnStates.Counting; waveCountDown = timeBetweenWaves; completeWaveFeedback.SetActive(true); if (nextWave + 1 > waves.Length - 1) { nextWave = 0; Debug.Log("Completou todas as ondas - Looping..."); } else { nextWave++; } StartCoroutine(CompleteWaveOff()); }
void StartCountdown() { state = SpawnStates.COUNTING; TimeLeft = timeBetweenWaves; if (nextWave > waves.Length - 2) { OnLevelComplete.Invoke(); state = SpawnStates.WON; } else { nextWave++; onCountdown.Invoke(); } waveCompleted = false; }
private void Update() { if (spawnState == SpawnStates.WAITING) { wavePercent.value = currentEnemyNum; if (!EnemyIsAlive()) { //print("Wave finished. Time till next wave: " + waveCountDown); wave.count += 3; waveCountDown = timeBetweenWaves; spawnState = SpawnStates.COUNTING; } else { return; } } if (waveCountDown <= 0) { if (spawnState != SpawnStates.SPAWNING) { if (nextWave == 3) { return; } StartCoroutine(SpawnWave(wave)); nextWave++; wave1.text = nextWave.ToString(); wave2.text = (nextWave - 1).ToString(); wavePercent.maxValue = wave.count; wavePercent.value = wave.count; currentEnemyNum = wave.count; } } else { waveCountDown -= Time.deltaTime; } }
IEnumerator SpawnWave(Wave wave) { state = SpawnStates.SPAWNING; if (state == SpawnStates.SPAWNING) { onWaveChange.Invoke(); } for (int i = 0; i < wave.enemies.Length; i++) { for (int j = 0; j < wave.enemies[i].count; j++) { SpawnEnemy(wave.enemies[i].enemy); yield return(new WaitForSeconds(1f / rate)); } } state = SpawnStates.WAITING; yield break; }
void setCurrentState(SpawnStates state) { currentState = state; }