Beispiel #1
0
 bool SpawnRateCoolDown(TheWave w)
 {
     if (w.currentSpawnCool < enemyPatterns[(int)w.eTypes].spawnRate)
     {
         w.currentSpawnCool += Time.deltaTime;
         return(false);
     }
     w.currentSpawnCool = 0;
     return(true);
 }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        //Debug.Log("Number of enemies " + Enemy.numAliveEnemies);
        if (GameStateManager.instance.state == GameStateManager.GameState.Gameplay)
        {
            if (!logicPaused)
            {
                if (currentWave < levels[currentLevel].numWavesTillBoss)
                {
                    if (WaveCooldown())
                    {
                        TheWave wave = new TheWave();
                        wave.eTypes           = PickRandomEnemy();
                        wave.spawnAmount      = Random.Range(enemyPatterns[(int)wave.eTypes].minSpawn, enemyPatterns[(int)wave.eTypes].maxSpawn + 1);
                        wave.currentSpawnCool = enemyPatterns[(int)wave.eTypes].spawnRate;
                        waves.Add(wave);
                    }
                    for (int i = 0; i < waves.Count; i++)
                    {
                        if (SpawnRateCoolDown(waves[i]))
                        {
                            Enemy e = EnemyPooling(enemyPatterns[(int)waves[i].eTypes].enemy);

                            int spawnPos = Random.Range(0, enemyPatterns[(int)waves[i].eTypes].spawnLocations.Length);
                            while (spawnPos == prevSpawnPos)
                            {
                                spawnPos = Random.Range(0, enemyPatterns[(int)waves[i].eTypes].spawnLocations.Length);
                            }
                            prevSpawnPos = spawnPos;
                            EnemyPatterns _pat = enemyPatterns[(int)waves[i].eTypes];
                            e.transform.position = _pat.spawnLocations[spawnPos].position;
                            e.OnSpawn();
                            e.gameObject.SetActive(true);
                            waves[i].spawnAmount--;
                            if (waves[i].spawnAmount == 0)
                            {
                                waves.RemoveAt(i);
                                currentWave++;
                                --i;
                            }
                        }
                    }
                }
                else if (!bossSpawned && Enemy.numAliveEnemies == 0)
                {
                    Invoke("SpawnBoss", 3);
                    bossSpawned = true;
                    waves.Clear();
                }

                CircleSwarm();
            }
        }
    }