/// <summary>
        /// Переодическое открытие закрытых окон (появление пожара)
        /// </summary>
        private IEnumerator OpenWindows()
        {
            // Пока в пуле есть доступные окна и активен игровой режим
            while (PoolsManager.QuantityObjects(ListingPools.Pools.Windows.ToString()) > 0 && LevelManager.GameMode == LevelManager.GameModes.Play)
            {
                var seconds = Random.Range(5, 12);
                yield return(new WaitForSeconds(seconds));

                // Определяем номер случайного окна (из всех окон в пуле)
                var number = Random.Range(0, PoolsManager.QuantityObjects(gameObject.name));

                // Получаем объект из пула и получаем его компонент
                var window = PoolsManager.GetObjectFromPool(ListingPools.Pools.Windows.ToString(), number).GetComponent <Window>();
                // Активируем объект
                window.ActivateObject();
            }
        }
示例#2
0
        /// <summary>
        /// Получение персонажа из пула объектов
        /// </summary>
        public void ShowVictims()
        {
            // Если в указанном пуле есть персонажи
            if (PoolsManager.QuantityObjects(_victims.ToString()) > 0)
            {
                Twinkle = false;

                //Получаем объект персонажа из пула и получаем его компонент
                var victim = PoolsManager.GetObjectFromPool(_victims.ToString()).GetComponent <Victims>();

                // Перемещаем персонажа в текущее окно (с указанным смещением)
                victim.transform.position = transform.position + new Vector3(0, victim.Offset, 0);

                // Записываем персонажу его окно
                victim.Window = this;

                // Активируем объект
                victim.ActivateObject();
            }
        }
示例#3
0
        /// <summary>
        /// Создание огненных капель в горящем окне
        /// </summary>
        private IEnumerator DropsFalling()
        {
            // Если окно открыто и активен игровой режим
            while (OpenWindow && LevelManager.GameMode == LevelManager.GameModes.Play)
            {
                yield return(new WaitForSeconds(Random.Range(_minSeconds, _maxSeconds)));

                // Вероятность падения капли
                var probability = Random.Range(1, 3);

                if (Twinkle && probability == 1)
                {
                    // Получаем объект из пула и получаем его компонент
                    var drop = PoolsManager.GetObjectFromPool(ListingPools.Pools.Twinkle.ToString()).GetComponent <Drop>();

                    // Перемещаем каплю к горящему окну (с небольшим горизонтальным смещением)
                    drop.transform.position = _fireFX.transform.position + new Vector3(-0.15f, Random.Range(-0.2f, 0.2f), 0);

                    // Активируем объект
                    drop.ActivateObject();
                }
            }
        }
        private void Start()
        {
            // Определяем количество окон с пожаром при старте
            var amount = Random.Range(2, _maximum + 1);

            for (int i = 0; i < amount; i++)
            {
                // Определяем номер случайного окна (из всех окон в пуле)
                var number = Random.Range(0, PoolsManager.QuantityObjects(ListingPools.Pools.Windows.ToString()));
                // Получаем объект из пула и получаем его компонент
                var window = PoolsManager.GetObjectFromPool(ListingPools.Pools.Windows.ToString(), number).GetComponent <Window>();

                // Открываем данное окно
                window.OpenWindow = true;
                // Активируем объект
                window.ActivateObject();
            }

            // Запускаем открытие других окон
            _ = StartCoroutine(OpenWindows());

            // Запускаем появление жителей в окнах
            _ = StartCoroutine(CharacterJumping());
        }