summaryrefslogtreecommitdiff
path: root/Penguloon/Levels/WaveManager.cs
diff options
context:
space:
mode:
authoraldrikboy <aldrikboy@gmail.com>2017-12-12 18:27:50 +0100
committeraldrikboy <aldrikboy@gmail.com>2017-12-12 18:27:50 +0100
commit60e8e48047e774a711fee35dfc58a7be993c3d88 (patch)
tree272285ccd8730960db823d83e42d4985d34db69a /Penguloon/Levels/WaveManager.cs
parentb0a3f57a68a39c2b027158cdfc9384ddb84dfa38 (diff)
yos
Diffstat (limited to 'Penguloon/Levels/WaveManager.cs')
-rw-r--r--Penguloon/Levels/WaveManager.cs77
1 files changed, 77 insertions, 0 deletions
diff --git a/Penguloon/Levels/WaveManager.cs b/Penguloon/Levels/WaveManager.cs
new file mode 100644
index 0000000..1a425a1
--- /dev/null
+++ b/Penguloon/Levels/WaveManager.cs
@@ -0,0 +1,77 @@
+using Penguloon.Enemies;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+
+namespace Penguloon.Levels
+{
+ public class WaveManager
+ {
+ public List<Wave> Waves { get; set; } = new List<Wave>();
+
+ public Map Map { get; set; }
+
+ public int CurrentWave { get; set; } = 1;
+
+ public bool RoundActive { get; set; }
+
+ public bool DoneSpawning { get; set; } = false;
+
+ public WaveManager(Map map)
+ {
+ this.Map = map;
+
+ CreateWaves();
+ }
+
+ private void CreateWaves()
+ {
+ Waves.Add(new Wave(new List<Tuple<Type, int>>() { new Tuple<Type, int>(typeof(RedBalloon), 5) }, 500));
+ }
+
+ public void StartSpawningEnemies()
+ {
+ RoundActive = true;
+ DoneSpawning = false;
+
+ new Thread(() =>
+ {
+ Thread.CurrentThread.IsBackground = true;
+
+ int waveToSpawn = CurrentWave - 1;
+
+ if (waveToSpawn >= Waves.Count)
+ waveToSpawn = Waves.Count - 1;
+
+ for (int i = 0; i < Waves[waveToSpawn].EnemiesToSpawn.Count; i++)
+ {
+ for(int x = 0; x < Waves[waveToSpawn].EnemiesToSpawn[i].Item2; x++)
+ {
+ Map.SpawnEnemy(Waves[waveToSpawn].EnemiesToSpawn[i].Item1);
+ Thread.Sleep(Waves[waveToSpawn].SpawnDelayMS);
+ }
+ }
+
+ DoneSpawning = true;
+
+ }).Start();
+ }
+
+ internal void FinishRound()
+ {
+ CurrentWave++;
+ }
+ }
+
+ public class Wave
+ {
+ public int SpawnDelayMS { get; set; }
+ public List<Tuple<Type, int>> EnemiesToSpawn { get; set; } = new List<Tuple<Type, int>>();
+
+ public Wave(List<Tuple<Type, int>> EnemiesToSpawn, int SpawnDelayMS)
+ {
+ this.SpawnDelayMS = SpawnDelayMS;
+ this.EnemiesToSpawn = EnemiesToSpawn;
+ }
+ }
+} \ No newline at end of file