aboutsummaryrefslogtreecommitdiff
path: root/td/Assets/Scripts/waveSpawner.cs
diff options
context:
space:
mode:
Diffstat (limited to 'td/Assets/Scripts/waveSpawner.cs')
-rw-r--r--td/Assets/Scripts/waveSpawner.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/td/Assets/Scripts/waveSpawner.cs b/td/Assets/Scripts/waveSpawner.cs
new file mode 100644
index 0000000..c3fada3
--- /dev/null
+++ b/td/Assets/Scripts/waveSpawner.cs
@@ -0,0 +1,76 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class waveSpawner : MonoBehaviour {
+
+ public static int EnemiesAlive = 0;
+
+ public Wave[] waves;
+
+ public Transform spawnPoint;
+
+ public float timeBetweenWaves = 5f;
+ private float countdown = 2f;
+
+ public Text waveCountdownText;
+
+
+ private int waveIndex = 0;
+
+ void Update ()
+ {
+ if (EnemiesAlive > 0)
+ {
+ return;
+ }
+
+ if (waveIndex == waves.Length)
+ {
+ // WIN LEVEL!!!
+ this.enabled = false;
+ }
+
+ if (countdown <= 0f)
+ {
+ StartCoroutine(SpawnWave());
+ countdown = timeBetweenWaves;
+ return;
+ }
+
+ countdown -= Time.deltaTime;
+
+ countdown = Mathf.Clamp(countdown, 0f, Mathf.Infinity);
+
+ //waveCountdownText.text = string.Format("{0:00.00}", countdown);
+ }
+
+ IEnumerator SpawnWave ()
+ {
+ Wave wave = waves[waveIndex];
+
+ EnemiesAlive = wave.count;
+
+ for (int i = 0; i < wave.count; i++)
+ {
+ SpawnEnemy(wave.enemy);
+ yield return new WaitForSeconds(1f / wave.rate);
+ }
+
+ waveIndex++;
+ }
+
+ void SpawnEnemy (GameObject enemy)
+ {
+ Instantiate(enemy, spawnPoint.position, spawnPoint.rotation);
+ }
+
+}
+
+[System.Serializable]
+public class Wave {
+ public GameObject enemy;
+ public int count;
+ public float rate;
+} \ No newline at end of file