Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 // Start is called before the first frame update
 void Start()
 {
     DataSource = LevelDataSourceFacstory.GetLevelDataSource();
     LevelData  = DataSource.GetLevelData();
 }