コード例 #1
0
    public GameObject SpawnFromPool(string tag, Vector3 position, Quaternion rotation)
    {
        if (!poolDictionary.ContainsKey(tag))
        {
            Debug.LogWarning("Pool with tag: " + tag + " doesn't exist");
            return(null);
        }

        GameObject objectToSpawn = poolDictionary[tag].Dequeue();

        if (objectToSpawn == null)
        {
            Debug.LogError(tag + " Was destroyed!");
        }

        objectToSpawn.SetActive(true);
        objectToSpawn.transform.position = position;
        objectToSpawn.transform.rotation = rotation;

        IObjectPooler resetObject = objectToSpawn.GetComponent <IObjectPooler>();

        if (resetObject != null)
        {
            resetObject.PrepareObjectToSpawn();
        }
        else
        {
            Debug.LogWarning("There is no IObjectPooler interface!");
        }

        poolDictionary[tag].Enqueue(objectToSpawn);

        return(objectToSpawn);
    }
コード例 #2
0
    public EnemyController(IObjectPooler objectPooler, EnemyViewController enemyViewController)
    {
        _enemyPooler = objectPooler;
        _enemyPooler.NewObjectCreated += SubscribeToNewEnemies;

        enemyViewController.WaveEnded += ResumeWaveTimer;

        ReadConfig();
    }
コード例 #3
0
    public GameplayController(ILevelSetter levelSetter, IEnemyController enemyController, IHealthController healthController, IGoldController goldController, ITowerController towerController, IObjectPooler objectPooler)
    {
        _levelSetter      = levelSetter;
        _enemyController  = enemyController;
        _healthController = healthController;
        _goldController   = goldController;
        _towerController  = towerController;
        _objectPooler     = objectPooler;

        _healthController.HealthIsZero += EndGame;
    }
コード例 #4
0
 public HealthController(IObjectPooler enemyPooler)
 {
     enemyPooler.NewObjectCreated += SubscribeToNewEnemies;
 }
コード例 #5
0
 public TowerController(IObjectPooler objectPooler, IGoldController goldController)
 {
     _goldController = goldController;
     _objectPooler   = objectPooler;
     _objectPooler.NewObjectCreated += SubscribeToNewTowers;
 }
コード例 #6
0
 private void Awake()
 {
     objectPooler    = FindObjectOfType <ObjectPooler>();
     inventorySystem = FindObjectOfType <InventorySystem>();
 }