public GoatSpawnController(LevelComponent levelComponent, LevelSettingsScriptableObject settings) { _levelComponent = levelComponent; _settings = settings; _random = new System.Random(); _spawnPoints = settings.GoatSpownPoints; _activeSpawns = new List <SpawnComponent>(); }
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))); //} }
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); } }
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); }); }
public void Init(LevelComponent level, Lifetime lifetime) { level.State.SubscribeOnStateChanged(lifetime, UpdateLevelState); UpdateLevelState(level.State); }