Esempio n. 1
0
    private IEnumerator LevelGenerationLoop()
    {
        _platformsGenerator = new PlatformGenerator(_sizeOfThePlatformPartsObjectPool, _sizeOfThePlatformsObjectPool, transform, _platformPartPrefab, _platformPrefab, _firstPlatformLength, _leftBorderX, _leftPlatformEdgeSprite, _platformMiddlePartsSprites, _rightPlatformEdgeSprite, _gridSnapper);

        _farBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_leftBorderX, _rightBorderX - _leftBorderX, _maxYDistanceOfBackgroundObjectsFromPlatform, (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _minAmountOfFarBackgroundObjectsInBatch), (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _maxAmountOfFarBackgroundObjectsInBatch), _farBackgroundObjectsSprites, _gridSnapper);
        _midBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_leftBorderX, _rightBorderX - _leftBorderX, _maxYDistanceOfBackgroundObjectsFromPlatform, (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _minAmountOfMidBackgroundObjectsInBatch), (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _maxAmountOfMidBackgroundObjectsInBatch), _midBackgroundObjectsSprites, _gridSnapper);
        _farBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_leftBorderX, _rightBorderX - _leftBorderX, _maxYDistanceOfBackgroundObjectsFromPlatform, (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _minAmountOfNearBackgroundObjectsInBatch), (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _maxAmountOfNearBackgroundObjectsInBatch), _nearBackgroundObjectsSprites, _gridSnapper);
        _farBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_leftBorderX, _rightBorderX - _leftBorderX, _maxYDistanceOfBackgroundObjectsFromPlatform, (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _minAmountOfForegroundObjectsInBatch), (int)(((_rightBorderX - _leftBorderX) / _backgroundObjectsBatchWidth) * _maxAmountOfForegroundObjectsInBatch), _foregroundObjectsSprites, _gridSnapper);


        WaitForSeconds delay = new WaitForSeconds(_delayToCheckBuildAndRemoveObjects);

        while (true)
        {
            #region создаём объекты

            _platformsGenerator.CheckAndTryCreatePlatform(_rightBorderX, _minPlatformLength, _maxPlatformLength, _minXDistanceBetweenPlatforms, _maxXDistanceBetweenPlatforms, _minYDistanceBetweenPlatforms, _maxYDistanceBetweenPlatforms, _leftPlatformEdgeSprite, _platformMiddlePartsSprites, _rightPlatformEdgeSprite, _gridSnapper);

            _wallsGenerator.CheckAndTryCreateObjectOnPlatform(_rightBorderX, _wallsYDistanceToPlatform, _gridSnapper);

            _buffsOnPlatformsGenerator.CheckAndTryCreateObjectOnPlatform(_rightBorderX, _buffOnPlatformYDistanceToPlatform, _gridSnapper);
            _debuffsOnPlatformsGenerator.CheckAndTryCreateObjectOnPlatform(_rightBorderX, _debuffOnPlatformYDistanceToPlatform, _gridSnapper);

            _buffsInTheAirGenerator.CheckAndTryCreateFloatingObject(_rightBorderX, _minHeightAbovePlatformForBuffsInTheAir, _maxHeightAbovePlatformForBuffsInTheAir, _gridSnapper);
            _bugsInTheAirGenerator.CheckAndTryCreateFloatingObject(_rightBorderX, _minHeightAbovePlatformForBugsInTheAir, _maxHeightAbovePlatformForBugsInTheAir, _gridSnapper);

            _farBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_rightBorderX, _backgroundObjectsBatchWidth, _maxYDistanceOfBackgroundObjectsFromPlatform, _minAmountOfFarBackgroundObjectsInBatch, _maxAmountOfFarBackgroundObjectsInBatch, _farBackgroundObjectsSprites, _gridSnapper);
            _midBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_rightBorderX, _backgroundObjectsBatchWidth, _maxYDistanceOfBackgroundObjectsFromPlatform, _minAmountOfMidBackgroundObjectsInBatch, _maxAmountOfMidBackgroundObjectsInBatch, _midBackgroundObjectsSprites, _gridSnapper);
            _nearBackgroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_rightBorderX, _backgroundObjectsBatchWidth, _maxYDistanceOfBackgroundObjectsFromPlatform, _minAmountOfNearBackgroundObjectsInBatch, _maxAmountOfNearBackgroundObjectsInBatch, _nearBackgroundObjectsSprites, _gridSnapper);
            _foregroundObjectsGenerator.CheckAndTryCreateBatchOfObjects(_rightBorderX, _backgroundObjectsBatchWidth, _maxYDistanceOfBackgroundObjectsFromPlatform, _minAmountOfForegroundObjectsInBatch, _maxAmountOfForegroundObjectsInBatch, _foregroundObjectsSprites, _gridSnapper);

            #endregion

            #region уничтожаем объекты

            _platformsGenerator.CheckAndTryRemoveObjects(_leftBorderX);

            _wallsGenerator.CheckAndTryRemoveObjects(_leftBorderX);

            _buffsOnPlatformsGenerator.CheckAndTryRemoveObjects(_leftBorderX);
            _debuffsOnPlatformsGenerator.CheckAndTryRemoveObjects(_leftBorderX);

            _buffsInTheAirGenerator.CheckAndTryRemoveObjects(_leftBorderX);
            _bugsInTheAirGenerator.CheckAndTryRemoveObjects(_leftBorderX);

            _farBackgroundObjectsGenerator.CheckAndTryRemoveObjects(_leftBorderX);
            _midBackgroundObjectsGenerator.CheckAndTryRemoveObjects(_leftBorderX);
            _nearBackgroundObjectsGenerator.CheckAndTryRemoveObjects(_leftBorderX);
            _foregroundObjectsGenerator.CheckAndTryRemoveObjects(_leftBorderX);


            #endregion


            yield return(delay);
        }
    }