Ejemplo n.º 1
0
    public void Initialize()
    {
        foreach (Spawner s in SpawnerList)
        {
            SpawnWarning spawnWarning = Instantiate(spawnWarningPrefab, StageManager.Instance.WorldCanvas.transform);

            spawnWarning.transform.position = s.warningLocation.position;
            spawnWarning.gameObject.SetActive(false);
            spawnWarnings.Add(spawnWarning);
        }

        foreach (EnemyWaveItem waveItem in Waves[0].enemyList)
        {
            float        timeUntilEnemy = waveItem.startDelay + Waves[0].delayUntilNextWave;
            SpawnWarning spawnWarning   = spawnWarnings[waveItem.spawnerIndex];

            spawnWarning.AddTimeInfo(new SpawnWarning.TimeInfo(0, currentWave + 1));
        }

        foreach (SpawnWarning s in spawnWarnings)
        {
            s.StartWarning();
        }

        battleInfo.InitializeNextWaveInfo(Waves[0].enemyList, null, 0, 1, true);
    }
Ejemplo n.º 2
0
    private IEnumerator SpawnWaveCo()
    {
        foreach (SpawnWarning s in spawnWarnings)
        {
            s.ResetSpawnWarning();
        }
        int       waveNumber  = currentWave;
        EnemyWave waveToSpawn = Waves[waveNumber];

        for (int i = 0; i < waveToSpawn.enemyList.Count; i++)
        {
            float delayBetweenSpawns = waveToSpawn.enemyList[i].delayBetweenOverride > 0 ? waveToSpawn.enemyList[i].delayBetweenOverride : waveToSpawn.delayBetweenSpawns;
            StartCoroutine(SpawnEnemyList(waveToSpawn.enemyList[i], delayBetweenSpawns));
        }

        if (waveNumber + 1 < Waves.Count)
        {
            /*
             * while(timeUntilNextWave > 0)
             * {
             *  timeUntilNextWave -= Time.deltaTime;
             *  battleInfo.UpdateNextWaveInfo(Waves[waveNumber + 1].enemyList, timeUntilNextWave);
             *  yield return null;
             * }
             */
            List <EnemyWaveItem> waveAfter = null;
            if (waveNumber + 2 < Waves.Count)
            {
                waveAfter = Waves[waveNumber + 2].enemyList;
            }

            battleInfo.InitializeNextWaveInfo(Waves[waveNumber + 1].enemyList, waveAfter, waveToSpawn.delayUntilNextWave, currentWave + 2);

            waveTimeElapsed  = 0;
            currentWaveDelay = waveToSpawn.delayUntilNextWave;

            foreach (EnemyWaveItem waveItem in Waves[waveNumber + 1].enemyList)
            {
                float        timeUntilEnemy = waveItem.startDelay + waveToSpawn.delayUntilNextWave;
                SpawnWarning spawnWarning   = spawnWarnings[waveItem.spawnerIndex];

                spawnWarning.AddTimeInfo(new SpawnWarning.TimeInfo(timeUntilEnemy, currentWave + 1));
            }

            foreach (SpawnWarning s in spawnWarnings)
            {
                s.StartWarning();
            }

            yield return(new WaitForSeconds(waveToSpawn.delayUntilNextWave));

            currentWave++;
            waveCoroutine = StartCoroutine(SpawnWaveCo());
        }
        else
        {
            battleInfo.InitializeNextWaveInfo(null, null, 0, currentWave + 2);
            battleInfo.soulPointText.text = "";
            finishedSpawn = true;
        }

        yield break;
    }