diff options
| author | aldrikboy <aldrikboy@gmail.com> | 2017-12-12 18:27:50 +0100 |
|---|---|---|
| committer | aldrikboy <aldrikboy@gmail.com> | 2017-12-12 18:27:50 +0100 |
| commit | 60e8e48047e774a711fee35dfc58a7be993c3d88 (patch) | |
| tree | 272285ccd8730960db823d83e42d4985d34db69a /Penguloon/Levels/WaveManager.cs | |
| parent | b0a3f57a68a39c2b027158cdfc9384ddb84dfa38 (diff) | |
yos
Diffstat (limited to 'Penguloon/Levels/WaveManager.cs')
| -rw-r--r-- | Penguloon/Levels/WaveManager.cs | 77 |
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 |
