public GoatSpawnController(LevelComponent levelComponent, LevelSettingsScriptableObject settings)
        {
            _levelComponent = levelComponent;
            _settings       = settings;

            _random       = new System.Random();
            _spawnPoints  = settings.GoatSpownPoints;
            _activeSpawns = new List <SpawnComponent>();
        }
Exemple #2
0
 public RuneRequirementController(LevelComponent level)
 {
     _level = level;
     //_runes = _level.Settings.SpawnComponents.Where(s => s.Type == SpawnType.Rune).ToArray();
     _requirements = new List <ActiveRune>();
     _factories    = new List <PoolFactory <SpawnComponent> >();
     //foreach (var component in _runes)
     //{
     //    _factories.Add(new PoolFactory<SpawnComponent>(() => GameObject.Instantiate<SpawnComponent>(component)));
     //}
 }
Exemple #3
0
        public Lifetime.Definition LoadLevel(Scenes levelId)
        {
            var def = GameContext.SceneManager.Load(Scenes.Level_01, component =>
            {
                Current = component;
            });

            LeveLifetime = def.Lifetime;
            def.Lifetime.AddAction(() =>
            {
                Current = null;
            });
            return(def);
        }
        public ExplosionController(LevelComponent level, ExplosionEffectComponent prefab)
        {
            _level   = level;
            _factory = new PoolFactory <ExplosionEffectComponent>(() => GameObject.Instantiate(prefab));
            var instances = ListPool <ExplosionEffectComponent> .Pop();

            for (int i = 0; i < 5; i++)
            {
                instances.Add(_factory.Pop());
            }
            foreach (var instance in instances)
            {
                _level.ToPool(instance.transform);
                _factory.Push(instance);
            }
            ListPool.Push(instances);
        }
        public SpawnController(LevelComponent levelComponent, LevelSettingsScriptableObject settings)
        {
            _levelComponent = levelComponent;
            _settings       = settings;

            _ballonHitClip = Resources.Load <AudioClip>("Audio/balloonhit");

            _random       = new System.Random();
            _spawnPoints  = new List <Vector3>();
            _activeSpawns = new List <ActiveSpawn>();
            _factories    = new List <PoolFactory <SpawnComponent> >();

            foreach (var component in settings.SpawnComponents)
            {
                var factory = new PoolFactory <SpawnComponent>(() => GameObject.Instantiate <SpawnComponent>(component));
                _factories.Add(factory);
            }
        }
Exemple #6
0
        public ShootController(LevelComponent level)
        {
            _shootClip = Resources.Load <AudioClip>("Audio/torpedo");

            _level = level;

            _leftSpawn  = level.BoatController.Left;
            _rightSpawn = level.BoatController.Right;

            _activeBullets = new List <ActiveBullet>();
            _factories     = new List <PoolFactory <BoatRocketComponent> >();

            foreach (var rocket in level.Settings.Rockets)
            {
                var factory = new PoolFactory <BoatRocketComponent>(() => GameObject.Instantiate(rocket));
                _factories.Add(factory);
            }

            level.InputController.SubscribeOnShoot(GameContext.Lifetime, Shoot);

            GameContext.SubscribeOnUpdate(level.Lifetime, (deltaTime) =>
            {
                var toRemove = ListPool <ActiveBullet> .Pop();
                foreach (var bullet in _activeBullets)
                {
                    if (bullet.Rocket.transform.position.z <= _level.Settings.BulletMinZ)
                    {
                        toRemove.Add(bullet);
                    }
                }
                foreach (var bullet in toRemove)
                {
                    bullet.Lifetime.Terminate();
                }
                ListPool.Push(toRemove);
            });
        }
Exemple #7
0
 public void Init(LevelComponent level, Lifetime lifetime)
 {
     level.State.SubscribeOnStateChanged(lifetime, UpdateLevelState);
     UpdateLevelState(level.State);
 }