コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }