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); }
public EnemyController(IObjectPooler objectPooler, EnemyViewController enemyViewController) { _enemyPooler = objectPooler; _enemyPooler.NewObjectCreated += SubscribeToNewEnemies; enemyViewController.WaveEnded += ResumeWaveTimer; ReadConfig(); }
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; }
public HealthController(IObjectPooler enemyPooler) { enemyPooler.NewObjectCreated += SubscribeToNewEnemies; }
public TowerController(IObjectPooler objectPooler, IGoldController goldController) { _goldController = goldController; _objectPooler = objectPooler; _objectPooler.NewObjectCreated += SubscribeToNewTowers; }
private void Awake() { objectPooler = FindObjectOfType <ObjectPooler>(); inventorySystem = FindObjectOfType <InventorySystem>(); }