Exemple #1
0
    private IEnumerator SpawnSubWave(SubWave subWave)
    {
        alive = 0;
        int totalEnemies = 0;

        foreach (var d in subWave.EnemyData)
        {
            totalEnemies += d.Amount;
        }

        bool portalsOpen = false;

        levelScript.OpenPortals(() =>
        {
            portalsOpen = true;
        });

        yield return(new WaitUntil(() => portalsOpen));

        events.FireEvent(new WaveEnemyChange {
            EnemiesLeft = totalEnemies
        });

        int i = 0;

        while (i < totalEnemies)
        {
            yield return(StartCoroutine(SpawnBatch(subWave.EnemyData, i, totalEnemies)));

            i += portals.Count;
        }

        levelScript.ClosePortals();

        while (alive > 0)
        {
            yield return(null);
        }
    }