//spawn enemies over time
        IEnumerator SpawnWave(Wave _wave)
        {
            state = SpawnPhase.SPAWNING;

            for (int i = 0; i < _wave.numberOfEnemies; i++)
            {
                enemyManager.SpawnEnemy(transform);
                yield return(new WaitForSeconds(1f / _wave.delayBetweenEnemySpawn));
            }

            state = SpawnPhase.WAITING;
            yield break;
        }
Exemple #2
0
 private void CheckPahse()
 {
     if (phase == SpawnPhase.FIST && enemiesDestroyed >= 3)
     {
         phase = SpawnPhase.SECOND;
     }
     else if (phase == SpawnPhase.SECOND &&
              enemiesSpawned == 10 &&
              enemiesDestroyed >= 7)
     {
         phase = SpawnPhase.THIRD;
     }
 }
Exemple #3
0
 private void waveEndStuff()
 {
     if (waves.Count > currentWaveIndex + 1)
     {
         previousWave = currentWave;
         currentWaveIndex++;
         currentWave = waves[currentWaveIndex];
         phase       = SpawnPhase.Spawning;
     }
     else
     {
         //end
     }
 }
        //switch state to count down
        //notfiy player
        //call win condition if passed wave 10
        void WaveCompleted()
        {
            state = SpawnPhase.COUNTING;

            waveState.text = "Time to restock and repair!";

            wavesCountDown = timeBetweenWaves;

            if (nextWave + 1 > waves.Length - 1)
            {
                SceneManager.LoadScene(5);
            }
            else
            {
                nextWave++;
            }
        }
Exemple #5
0
    void Update()
    {
        if (currentWaveIndex == waves.Count - 1 && phase != SpawnPhase.Spawning)
        {
            bool finished = true;
            foreach (var go in GameObject.FindGameObjectsWithTag("Goblin"))
            {
                Goblin goblin = go.GetComponent <Goblin>();
                if (goblin.IsAlive())
                {
                    finished = false;
                    break;
                }
            }
            if (finished)
            {
                UIManager.main.ShowTheEnd();
            }
        }

        if (currentWaveIndex == waves.Count - 1)
        {
            UIManager.main.HideIntermissionInfo();
            UIManager.main.HideIntermissionTimer();
        }

        if (phase == SpawnPhase.Spawning)
        {
            //Debug.Log("Starting to spawn " + Time.fixedTime);
            if (!spawningOnGoing)
            {
                for (int i = 0; i < 4; i++)
                {
                    WaveSpawn wave = currentWave.GetSpawn(i);
                    //Batch batch = currentBatch[i];
                    if (wave.batches.Count > 0)
                    {
                        spawnPoints[i].SetWaveSpawn(wave);
                    }
                }

                spawningOnGoing = true;
            }

            // next wave when all the spawners have spawned their enemies
            if (spawnPoints.Aggregate(true, (prod, next) => prod && next.GetHasEnded()))
            {
                spawningOnGoing = false;
                phase           = SpawnPhase.Waiting;
                waitStarted     = Time.fixedTime;
            }
        }
        else if (phase == SpawnPhase.Waiting && (Time.fixedTime - waitStarted > currentWave.WaveEndWaitTime))
        {
            phase = SpawnPhase.Ended;
            UIManager.main.HideIntermissionInfo();
        }
        else if (phase == SpawnPhase.Waiting)
        {
            if (Input.GetKeyDown(KeyCode.Space) && TutorialManager.main.GetFinished())
            {
                skipWaveWaitingPeriod();
                UIManager.main.HideIntermissionInfo();
            }
            else
            {
                UIManager.main.UpdateIntermissionInfo("Wave " + (currentWaveIndex + 2) + " spawns in:");
                UIManager.main.UpdateIntermissionTimer(currentWave.WaveEndWaitTime - (Time.fixedTime - waitStarted));
            }
        }
        else if (phase == SpawnPhase.Ended)
        {
            waveEndStuff();
        }
    }
Exemple #6
0
 private void StartSpawn()
 {
     SpawnPlayer();
     phase = SpawnPhase.FIST;
 }