public void StartLevel(LevelData levelData) { _blocks = new List <Block>(); _levelData = levelData; _setLevelNameSignal.Fire(levelData.LevelName); _headQuarter = _hqPool.Spawn(); _headQuarter.transform.position = levelData.HqPosition; _playerSpewnPoint = levelData.PlayerSpawnVector3; GetMapFromTexture(_levelData.LevelGeometry); _mapData = new MapData(_levelData.LevelGeometry); _collidedWithBlockSignal += onCollidedWithBlock; _enemySpawnController = new EnemySpawnController(); _enemySpawnController.Init(15, levelData.EnemySpawnPoints, _enemyPool, _mapData); _player = _playerPool.Spawn(); _player.Player.Position = _playerSpewnPoint; _player.Player.LifesCount = 3; _enemySpawnController.InitialSpawnAtStart(); EnemyTankCount tankCount = new EnemyTankCount(); tankCount.AllTanksCount = _enemySpawnController.UnitsCount; tankCount.InGameTanksCount = _killedTankCount; _setPlayerLifesSignal.Fire(_player.Player.LifesCount); _setEnemyTankCountSignal.Fire(tankCount); SendTankCountInfo(); }
public void Dispose() { for (int i = 0; i < _blocks.Count; i++) { if (_blocks[i]) { _blockPool.Despawn(_blocks[i]); } } _blocks.Clear(); _killedTankCount = 0; SendTankCountInfo(); _enemySpawnController.Dispose(); _hqPool.Despawn(_headQuarter); _playerPool.Despawn(_player); _collidedWithBlockSignal -= onCollidedWithBlock; }