Esempio n. 1
0
        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);
        }
Esempio n. 2
0
    void RemoveEnemy(CharacterObject characterObject)
    {
        if (OnEnemyRemoved != null)
        {
            if (characterObject.characterDefinition.characterType != CharacterType.PLAYER)
            {
                OnEnemyRemoved.Invoke(enemyCharacters.IndexOf(characterObject));
            }
        }

        enemyCharacters.Remove(characterObject);
    }
Esempio n. 3
0
    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;
            }
        }
    }