Example #1
0
        private static void SpawnEnemy(EnemyWaveConfig enemyWaveConfig, EnemyPathing enemyPathing)
        {
            var enemy = Instantiate(
                enemyWaveConfig.EnemyPrefab,
                enemyWaveConfig.GetWaypoints()[0].position,
                Quaternion.identity);
            var enemyComp = enemy.GetComponent <Enemy>();

            SetEnemyAttributes(enemyWaveConfig, enemyComp);
            enemyPathing.AddEnemy(enemy);
        }
Example #2
0
        private IEnumerator SpawnEnemiesInWave(EnemyWaveConfig waveConfig)
        {
            for (int enemyIndex = 0; enemyIndex < waveConfig.GetNumberOfEnemies(); enemyIndex++)
            {
                GameObject enemyInstance = Instantiate(waveConfig.GetEnemyPrefab(),
                                                       waveConfig.GetWaypoints()[0].transform.position,
                                                       Quaternion.identity) as GameObject;

                levelManager.EnemySpawned();

                // Set the current wave config on enemy instance
                enemyInstance.GetComponent <EnemyPath>().SetWaveConfig(waveConfig);

                yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns()));
            }
        }
Example #3
0
        private IEnumerator SpawnAllEnemiesInEnemyWave(EnemyWaveConfig enemyWaveConfig, EnemyPathing enemyPathing,
                                                       LevelWaveConfig currentLevelWave, bool last)
        {
            yield return(new WaitForSeconds(enemyWaveConfig.SpawnDelay));

            do
            {
                for (var i = 0; i < enemyWaveConfig.NumberOfEnemies; i++)
                {
                    SpawnEnemy(enemyWaveConfig, enemyPathing);
                    yield return(new WaitForSeconds(Random.Range(enemyWaveConfig.MinTimeBetweenSpawns,
                                                                 enemyWaveConfig.MaxTimeBetweenSpawns)));
                }
            } while (enemyWaveConfig.ContinuousSpawning &&
                     (currentLevelWave.WaveSpawning || FindObjectsOfType <Enemy>().Length > 0));

            if (last)
            {
                currentLevelWave.WaveSpawning = false;
            }
        }
Example #4
0
 private static void SetEnemyAttributes(EnemyWaveConfig enemyWaveConfig, Enemy enemyComp)
 {
     if (enemyWaveConfig.Health != 0)
     {
         enemyComp.Health = enemyWaveConfig.Health;
     }
     if (enemyWaveConfig.MoveSpeed != 0)
     {
         enemyComp.MoveSpeed = enemyWaveConfig.MoveSpeed;
     }
     if (enemyWaveConfig.ProjectileDamage != 0)
     {
         enemyComp.ProjectileDamage = enemyWaveConfig.ProjectileDamage;
     }
     if (enemyWaveConfig.CollisionDamage != 0)
     {
         enemyComp.CollisionDamage = enemyWaveConfig.CollisionDamage;
     }
     if (enemyWaveConfig.ProjectileSpeed != 0)
     {
         enemyComp.ProjectileSpeed = enemyWaveConfig.ProjectileSpeed;
     }
     if (enemyWaveConfig.MinTimeBetweenShots != 0)
     {
         enemyComp.MinTimeBetweenShots = enemyWaveConfig.MinTimeBetweenShots;
     }
     if (enemyWaveConfig.MaxTimeBetweenShots != 0)
     {
         enemyComp.MaxTimeBetweenShots = enemyWaveConfig.MaxTimeBetweenShots;
     }
     if (enemyWaveConfig.ShootChance != 0)
     {
         enemyComp.ShootChance = enemyWaveConfig.ShootChance;
     }
     if (enemyWaveConfig.ScoreToGive != 0)
     {
         enemyComp.ScoreToGive = enemyWaveConfig.ScoreToGive;
     }
 }
Example #5
0
 public void SetEnemyWaveConfig(EnemyWaveConfig enemyWaveConfig)
 {
     this.enemyWaveConfig = enemyWaveConfig;
     waypoints            = enemyWaveConfig.GetWaypoints();
 }