private void UpdateEnemySpawns(double gameTime) { if (UpComingEnemies.Count == 0) { return; } EnemyDef lastElement = UpComingEnemies[UpComingEnemies.Count - 1]; if (gameTime < lastElement.LaunchTime) { UpComingEnemies.RemoveAt(UpComingEnemies.Count - 1); _enemies.Add(CreateEnemyFromDef(lastElement)); } }
private Enemy CreateEnemyFromDef(EnemyDef enemyDef) { Enemy enemy = new Enemy(_textureManager, _effectManager, _bulletManager, _soundManager); switch (enemyDef.EnemyType) { case "cannon_fodder": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(0, 250, 0)); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } case "cannon_fodder_low": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(0, -250, 0)); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } case "cannon_fodder_straight": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 14); return(enemy); } case "up_1": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(new Vector(500, -375, 0)); _pathPoints.Add(new Vector(500, 0, 0)); _pathPoints.Add(new Vector(500, 0, 0)); _pathPoints.Add(new Vector(-1400, 200, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } case "down_1": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(500, 0, 0)); _pathPoints.Add(new Vector(500, 0, 0)); _pathPoints.Add(new Vector(-1400, -200, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } case "test_for_points": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(0, 0, 0)); _pathPoints.Add(new Vector(0, 100, 0)); _pathPoints.Add(new Vector(-250, 375, 0)); _pathPoints.Add(new Vector(-1400, 375, 0)); enemy.Path = new Path(_pathPoints, 5); return(enemy); } case "formation1_1": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } case "formation1_2": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(-1400, 100, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } case "formation1_3": { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(enemyDef.StartPos); _pathPoints.Add(new Vector(-1400, -100, 0)); enemy.Path = new Path(_pathPoints, 10); return(enemy); } default: { System.Diagnostics.Debug.Assert(false, "Unknown Enemy Type."); return(enemy); } } }