From 60e8e48047e774a711fee35dfc58a7be993c3d88 Mon Sep 17 00:00:00 2001 From: aldrikboy Date: Tue, 12 Dec 2017 18:27:50 +0100 Subject: yos --- Penguloon/Levels/WaveManager.cs | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Penguloon/Levels/WaveManager.cs (limited to 'Penguloon/Levels/WaveManager.cs') 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 Waves { get; set; } = new List(); + + 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>() { new Tuple(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> EnemiesToSpawn { get; set; } = new List>(); + + public Wave(List> EnemiesToSpawn, int SpawnDelayMS) + { + this.SpawnDelayMS = SpawnDelayMS; + this.EnemiesToSpawn = EnemiesToSpawn; + } + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2