Exemple #1
0
    /// <summary>
    /// Updates all of the regions.
    /// </summary>
    void UpdateRegions()
    {
        Vector3 cameraPosition = _camera.position;

        _currentRegion = (int)(cameraPosition.z / _regionSize.y);

        if (_currentRegion > _previousRegion)
        {//if we have moved up a region.
            //destroy the bottom regions
            Destroy(_regions[RegionOrder.Bot].gameObject);

            int size = _regions.Count - 1;
            for (int i = 0; i < size; i++)
            {//shift all of the regions down
                _regions[(RegionOrder)i] = _regions[(RegionOrder)i + 1];
            }

            //create and intiialize a new regions for the top.
            GameObject regionClone = PrefabFactory.CreateGameObject(PrefabFactory.Prefab.Region);

            Vector3 position = regionClone.transform.position;
            position.z = _regions[(RegionOrder)((int)RegionOrder.Top - 1)].position.z + _regionSize.y;

            regionClone.transform.position = position;

            Region region = regionClone.GetComponent <Region>();
            region.Setup(_halfRegionSize);

            _regions[RegionOrder.Top] = region;
        }

        _previousRegion = _currentRegion;
    }
Exemple #2
0
    /// <summary>
    /// Generates YellowBall randomly around the region.
    /// </summary>
    /// <param name="positionsOccupied"></param>
    void GenerateYellowBalls(ref List <CreationData> positionsOccupied)
    {
        Vector2 size             = PrefabFactory.GetSize(PrefabFactory.Prefab.YellowBall) * 0.5f;
        Vector2 failedToPosition = new Vector3(-1, -1);

        int yellowBallCount     = 0;
        int yellowBallsToCreate = Random.Range(0, ConstHolder.MAX_YELLOWBALLS);

        while (yellowBallCount != yellowBallsToCreate)
        {
            Vector2 position = GetAvailabePosition(size, ref positionsOccupied);

            if (position != failedToPosition)
            {
                positionsOccupied.Add(new CreationData(position, size));

                GameObject clone = PrefabFactory.CreateGameObject(PrefabFactory.Prefab.YellowBall);
                clone.transform.position = new Vector3(position.x, clone.transform.position.y, position.y);
                clone.transform.parent   = _transform;

                YellowBall yellowBall = clone.GetComponent <YellowBall>();
                yellowBall.Initialize();

                _yellowBalls.Add(yellowBall);
                yellowBallCount++;
            }
            else
            {
                break;
            }
        }
    }
Exemple #3
0
    /// <summary>
    /// Generates obstacles randomly around the region.
    /// Actiavtes one of its walls.
    /// </summary>
    /// <param name="prefab"></param>
    /// <param name="positionsOccupied"></param>
    void GenerateObstacles(ref List <CreationData> positionsOccupied)
    {
        int obstacleCount     = 0;
        int obstaclesToCreate = Random.Range(1, DataManager.maximumObstacles + 1);

        ActivateWall(ref positionsOccupied);

        Vector2 size             = PrefabFactory.GetSize(PrefabFactory.Prefab.Wall) * 0.5f;
        Vector2 failedToPosition = new Vector2(-1, -1);

        while (obstacleCount < obstaclesToCreate)
        {
            Vector2 position = GetAvailabePosition(size, ref positionsOccupied);

            if (position != failedToPosition)
            {
                positionsOccupied.Add(new CreationData(position, size));

                GameObject clone          = PrefabFactory.CreateGameObject(PrefabFactory.Prefab.Wall);
                Transform  cloneTransform = clone.transform;

                cloneTransform.position = new Vector3(position.x, cloneTransform.position.y, position.y);
                cloneTransform.parent   = _transform;

                _obstacles.Add(clone);
                obstacleCount++;
            }
            else
            {
                break;
            }
        }
    }
Exemple #4
0
    /// <summary>
    /// Generates regions and restarts the level.
    /// </summary>
    void GenerateRegions()
    {
        RestartGame();

        //setup region size
        _regionSize     = PrefabFactory.GetSize(PrefabFactory.Prefab.Region);
        _halfRegionSize = _regionSize * 0.5f;

        //create the first region and initialize it
        Region region = PrefabFactory.CreateGameObject(PrefabFactory.Prefab.Region).GetComponent <Region>();

        region.Initialize(_halfRegionSize);
        _regions.Add(RegionOrder.Bot, region);

        //set the z position to the next position to connect the regions.
        float z = _regions[RegionOrder.Bot].position.z + _regionSize.y;

        int extraRegions = (int)RegionOrder.Count;

        for (int i = 1; i < extraRegions; i++)
        {//create each individual region, set its position and initialize it.
            GameObject regionClone = PrefabFactory.CreateGameObject(PrefabFactory.Prefab.Region);

            Vector3 position = regionClone.transform.position;
            position.z = z;

            regionClone.transform.position = position;

            region = regionClone.GetComponent <Region>();
            region.Initialize(_halfRegionSize);

            _regions.Add((RegionOrder)i, region);

            z += _regionSize.y;
        }
    }