private Enemy CreateEnemyFromDef(EnemyDef definition) { Enemy enemy = new Enemy(_textureManager, _effectsManager, _bulletManager); if (definition.EnemyType == "cannon_fodder") { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(new Vector(1400, 0, 0)); _pathPoints.Add(new Vector(0, 250, 0)); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 10); } else if (definition.EnemyType == "cannon_fodder_low") { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(new Vector(1400, 0, 0)); _pathPoints.Add(new Vector(0, -250, 0)); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 10); } else if (definition.EnemyType == "cannon_fodder_straight") { List <Vector> _pathPoints = new List <Vector>(); _pathPoints.Add(new Vector(1400, 0, 0)); _pathPoints.Add(new Vector(-1400, 0, 0)); enemy.Path = new Path(_pathPoints, 14); } else if (definition.EnemyType == "up_l") { 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); } else if (definition.EnemyType == "down_l") { 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); } else { System.Diagnostics.Debug.Assert(false, "Unknown enemy type."); } return(enemy); }
private void UpdateEnemySpawns(double gameTime) { // If no upcoming enemies then there's nothing to spawn. if (_upComingEnemies.Count == 0) { return; } EnemyDef lastElement = _upComingEnemies[_upComingEnemies.Count - 1]; if (gameTime < lastElement.LaunchTime) { _upComingEnemies.RemoveAt(_upComingEnemies.Count - 1); _enemies.Add(CreateEnemyFromDef(lastElement)); } }