public bool TryPrepare([NotNull] ILevelDataSource levelDataSource, [NotNull] ObstaclesFactory obstaclesFactory) { CleanUp(); if (_ball == null) { return(false); } _ball.Stop(); Transform ballTransform = _ball.transform; ballTransform.localPosition = Vector3.zero; ballTransform.localRotation = Quaternion.identity; if (_finishLine == null) { return(false); } var(startCenter, endCenter, isSuccess) = levelDataSource.TryGetObstaclesFieldCoordinates(); if (!isSuccess) { return(false); } bool isFinishPrepared = _finishLine.TryPrepare(startCenter, endCenter); if (!isFinishPrepared) { return(false); } var obstaclesData = levelDataSource.GetObstacles(); var obstacles = new List <Obstacle>(); foreach (var obstacleData in obstaclesData) { Obstacle obstacle; (obstacle, isSuccess) = obstaclesFactory.TryGetObstacle(obstacleData); if (isSuccess) { obstacle.transform.SetParent(transform); obstacles.Add(obstacle); } } _obstacles = obstacles; return(true); }
// Start is called before the first frame update void Start() { DataSource = LevelDataSourceFacstory.GetLevelDataSource(); LevelData = DataSource.GetLevelData(); }