private void SpawnEnemy(Vector3 pos, EnemyInfo info) { var enemy = GameObject.Instantiate(info.Prefab, pos, Quaternion.identity, _enemiesParent). GetComponent <Enemy>(); enemy.SetStatsFromInfo(info); enemy.OnDeath += x => OnEnemyRemoved?.Invoke(x.transform); _enemies.Add(enemy); OnEnemySpawned?.Invoke(enemy.transform); }
void RemoveEnemy(CharacterObject characterObject) { if (OnEnemyRemoved != null) { if (characterObject.characterDefinition.characterType != CharacterType.PLAYER) { OnEnemyRemoved.Invoke(enemyCharacters.IndexOf(characterObject)); } } enemyCharacters.Remove(characterObject); }
private void HandleEnemyRemoved(Enemy enemy) { enemy.OnRemoved -= HandleEnemyRemoved; _spawnedEnemiesByUID.Remove(enemy.gameObject.GetInstanceID()); if (!enemy.IsSpawning) { _liveEnemyCount--; _eliminatedEnemyCount++; OnEnemyRemoved?.Invoke(new EnemyInfo(enemy.Type, _liveEnemyCount, _eliminatedEnemyCount)); } else { if (enemy.Type == EnemyType.Titan) { // We have unsuccessfully tried to spawn a titan. We have to try again. _waitingForTitanSpawnConfirmation = false; } } }