public IPlayArea GeneratePlayArea(Vector2 rightCoordinate, TerrainFeature[] availableFeatures) { var terrainProfile = _profileSelector.SelectProfile(); var leftCoordinate = new Vector2(rightCoordinate.x - _sectionLength, rightCoordinate.y); var costAdjustedFeatures = InitializeFeatureCost(availableFeatures, terrainProfile); var featureCollection = new PriceAdjustedFeatureCollection(costAdjustedFeatures); var groundResult = GenerateSequentialTiles(rightCoordinate, leftCoordinate, featureCollection.GroundFeatures); var assetLayers = GenerateAssetLayers(rightCoordinate, leftCoordinate, groundResult.StartPosition.x, groundResult.EndPosition.x, featureCollection); return(GeneratePlayArea(rightCoordinate, groundResult.EndPosition, groundResult.Tiles, assetLayers)); }
private List <GameObject> GenerateAssetLayers(Vector2 rightCoordinate, Vector2 leftCoordinate, float rightBounds, float leftBounds, PriceAdjustedFeatureCollection featureCollection) { var layerCellList = new List <GameObject>(); IEnumerable <GameObject> assetLayer; foreach (var layer in Enum.GetValues(typeof(Layer)).Cast <Layer>()) { var allowAssetRepetition = false; var features = featureCollection.BackgroundFeatures; switch (layer) { case Layer.Background: features = featureCollection.BackgroundFeatures; assetLayer = GenerateAssetLayer(rightBounds, leftBounds, features, allowAssetRepetition); break; case Layer.Foreground: features = featureCollection.ForegroundFeatures; assetLayer = GenerateAssetLayer(rightBounds, leftBounds, features, allowAssetRepetition); break; case Layer.Background2: features = featureCollection.Background2Features; assetLayer = GenerateAssetLayer(rightBounds, leftBounds, features, allowAssetRepetition); break; case Layer.Background3: features = featureCollection.Background3Features; assetLayer = GenerateAssetLayer(rightBounds, leftBounds, features, allowAssetRepetition); break; case Layer.Lighting: features = featureCollection.LightingFeatures; assetLayer = GenerateAssetLayer(rightBounds, leftBounds, features, allowAssetRepetition); break; case Layer.ShootingStars: features = featureCollection.ShootingStarsFeatures; assetLayer = GenerateAssetLayer(rightBounds, leftBounds, features, allowAssetRepetition); break; default: continue; } var assetLayerContainer = AssignLayerParent(rightCoordinate, leftCoordinate, assetLayer, layer); layerCellList.Add(assetLayerContainer); } return(layerCellList); }