//Initializes the enemy Objects using the setter functions of the objects - Very simple function void InitializeEnemySpawners(EnemyWaveSpawn enemySpawnInfo) { enemySpawnInfo.SetSpecificEnemyCount(); //enemySpawnInfo.SetSpawnTimes(); //enemySpawnInfo.SetSpawnPosition(); enemySpawnInfo.MakeFormations(); }
//creates new enemy spawner objects from EnemyWaveSpawner class for each enemy type using the instance parameters void NextWaveEnemies() { basicSpawner = new EnemyWaveSpawn("Basic", basicStartTime, basicTimeInterval, currentWave.numberOfEnemies); sprinterSpawner = new EnemyWaveSpawn("Sprinter", sprinterStartTime, sprinterTimeInterval, currentWave.numberOfEnemies); jumperSpawner = new EnemyWaveSpawn("Jumper", jumperStartTime, jumperTimeInterval, currentWave.numberOfEnemies); dodgerSpawner = new EnemyWaveSpawn("Dodger", dodgerStartTime, dodgerTimeInterval, currentWave.numberOfEnemies); tankSpawner = new EnemyWaveSpawn("Tank", tankStartTime, tankTimeInterval, currentWave.numberOfEnemies); //GC.Collect(); }
//spawns the enemies of type enemySpawnInfo in a timely manner using the parameter's spawning properties void SpawnEnemy(EnemyWaveSpawn enemySpawnInfo) { BasicEnemy basicEnemyInstance; SprinterEnemy sprinterEnemyInstance; JumperEnemy jumperEnemyInstance; DodgerEnemy dodgerEnemyInstance; TankEnemy tankEnemyInstance; for (int i = 0; i < enemySpawnInfo.specificEnemyCount; i++) { if (Time.time - spawnTime >= enemySpawnInfo.spawnTimes[i] && enemySpawnInfo.spawned[i] == false) { //Vector3 spawnPoint = new Vector3(enemySpawnInfo.spawnPoints[i].spawnPointX, enemySpawnInfo.spawnPoints[i].spawnPointY, enemySpawnInfo.spawnPoints[i].spawnPointZ); Vector3 spawnPoint = enemySpawnInfo.spawnPositions[i]; if (string.Compare(enemySpawnInfo.enemyType, "Basic") == 0) { Debug.Log("About to spawn basic enemy"); basicEnemyInstance = Instantiate(basicEnemyPrefab, spawnPoint, Quaternion.identity); if (PlayerPrefs.GetInt("BasicIntroduced", 0) == 0 && Wave.waveNumber == 2) { StartCoroutine(IntroduceEnemies(basicEnemyInstance.gameObject, enemySpawnInfo.enemyType, 10f, 5f, 5f)); PlayerPrefs.SetInt("BasicIntroduced", 1); } } else { Debug.Log("About to spawn other enemy"); } if (string.Compare(enemySpawnInfo.enemyType, "Sprinter") == 0) { sprinterEnemyInstance = Instantiate(sprinterEnemyPrefab, spawnPoint, Quaternion.identity); if (PlayerPrefs.GetInt("SprinterIntroduced", 0) == 0) { StartCoroutine(IntroduceEnemies(sprinterEnemyInstance.gameObject, enemySpawnInfo.enemyType, 5f, 15f, 10f)); PlayerPrefs.SetInt("SprinterIntroduced", 1); } } if (string.Compare(enemySpawnInfo.enemyType, "Jumper") == 0) { jumperEnemyInstance = Instantiate(jumperEnemyPrefab, spawnPoint, Quaternion.identity); if (PlayerPrefs.GetInt("JumperIntroduced", 0) == 0) { StartCoroutine(IntroduceEnemies(jumperEnemyInstance.gameObject, enemySpawnInfo.enemyType, 10f, 7f, 10f)); PlayerPrefs.SetInt("JumperIntroduced", 1); } } if (string.Compare(enemySpawnInfo.enemyType, "Dodger") == 0) { dodgerEnemyInstance = Instantiate(dodgerEnemyPrefab, spawnPoint, Quaternion.identity); if (PlayerPrefs.GetInt("DodgerIntroduced", 0) == 0) { StartCoroutine(IntroduceEnemies(dodgerEnemyInstance.gameObject, enemySpawnInfo.enemyType, 20f, 5f, 15f)); PlayerPrefs.SetInt("DodgerIntroduced", 1); } } if (string.Compare(enemySpawnInfo.enemyType, "Tank") == 0) { tankEnemyInstance = Instantiate(tankEnemyPrefab, spawnPoint, Quaternion.identity); if (PlayerPrefs.GetInt("TankIntroduced", 0) == 0) { StartCoroutine(IntroduceEnemies(tankEnemyInstance.gameObject, enemySpawnInfo.enemyType, 50f, 3f, 20f)); PlayerPrefs.SetInt("TankIntroduced", 1); } } Debug.Log("New enemy spawned"); enemySpawnInfo.spawned[i] = true; } } }