public void SpawnEnemy(Enumerators.EnemyType enemyType) { Enemy enemy; switch (enemyType) { case Enumerators.EnemyType.FIRST_TYPE: enemy = new FirstTypeEnemy(_gameManager.LevelController.CurrentLevel.EnemySpawnPoint, _gameManager.LevelController.CurrentLevel.EnemyWaypoints, _enemiesContainer); break; case Enumerators.EnemyType.SECOND_TYPE: enemy = new SecondTypeEnemy(_gameManager.LevelController.CurrentLevel.EnemySpawnPoint, _gameManager.LevelController.CurrentLevel.EnemyWaypoints, _enemiesContainer); break; case Enumerators.EnemyType.THIRD_TYPE: enemy = new ThirdTypeEnemy(_gameManager.LevelController.CurrentLevel.EnemySpawnPoint, _gameManager.LevelController.CurrentLevel.EnemyWaypoints, _enemiesContainer); break; case Enumerators.EnemyType.FOURTH_TYPE: enemy = new FourthTypeEnemy(_gameManager.LevelController.CurrentLevel.EnemySpawnPoint, _gameManager.LevelController.CurrentLevel.EnemyWaypoints, _enemiesContainer); break; default: Debug.LogError("An enemy of this type does not exist!"); return; } enemy.OnEnemyReachedEndOfWayEvent += OnEnemyReachedEndOfWayEventHandler; enemy.OnEnemyDiedEvent += OnEnemyDiedEventHandler; Enemies.Add(enemy); }
public Enemy(Enumerators.EnemyType enemyType, Transform enemySpawnPoint, Transform[] wavepoints, Transform container) { _waypoints = wavepoints; EnemySettings enemySettings = SettingsDataUtils.GetEnemySettingsByType(enemyType); SetEnemyParams(enemySettings); SpawnEnemy(enemySettings.prefab, enemySpawnPoint, container); _waypointIndex = 0; _targetWaypoint = _waypoints[0]; }
public static EnemySettings GetEnemySettingsByType(Enumerators.EnemyType enemyType) { EnemySettings[] enemySettings = GameClient.Get <IDataManager>().GetScriptableObject <EnemySettingsData>().enemySettings; EnemySettings enemyData = enemySettings.FirstOrDefault(x => x.enemyType == enemyType); if (enemyData == null) { Debug.LogError("No EnemySettings for enemy with type - " + enemyType); } return(enemyData); }