Ejemplo n.º 1
0
        private static void PutTerrainOnMap(Tile[,] tileMap, GeneratorParameters parameters, string sourceTexture, string[] forbiddenTextures)
        {
            PutTerrainSources(tileMap, sourceTexture, parameters.MinSourceAmount, parameters.MaxSourceAmount, forbiddenTextures);
            GrowTerrainType(tileMap, parameters.Size, parameters.GrowChance, sourceTexture, forbiddenTextures);

            for (int i = 0; i < 2; i++)
            {
                SmoothTerrain(tileMap, sourceTexture);
            }
        }
Ejemplo n.º 2
0
        public Tile[,] GetMap(int xDimension, int yDimension)
        {
            Tile[,] tileMap = new Tile[xDimension, yDimension];

            InitializeMap(tileMap);
            // Stone
            GeneratorParameters stoneParameters = new GeneratorParameters(120, 950, 40, 50);
            const string        stone1Texture   = TexturePackerMonoGameDefinitions.texturePackerSpriteAtlas.Stone1;

            string[] forbiddenForStone = { stone1Texture };
            PutTerrainOnMap(tileMap, stoneParameters, stone1Texture, forbiddenForStone);

            BlockTilesBehindMountains(tileMap, stone1Texture);

            // Water
            GeneratorParameters waterParameters = new GeneratorParameters(140, 910, 10, 20);

            string[] forbiddenForWater = { stone1Texture };
            PutTerrainOnMap(tileMap, waterParameters, TexturePackerMonoGameDefinitions.texturePackerSpriteAtlas.Water1, forbiddenForWater);

            // Sand
            GeneratorParameters sandParameters = new GeneratorParameters(500, 950, 1, 2);

            string[] forbiddenForSand = { TexturePackerMonoGameDefinitions.texturePackerSpriteAtlas.Water1, stone1Texture };
            PutTerrainOnMap(tileMap, sandParameters, TexturePackerMonoGameDefinitions.texturePackerSpriteAtlas.Sand1, forbiddenForSand);

            SetTerrainBorders(tileMap);

            // Stone tiles are bigger, so make the rectangle larger
            foreach (Tile tile in tileMap)
            {
                if (tile != null && tile.Type.Contains("stone"))
                {
                    tile.Rect = new Rectangle(tile.Rect.X, tile.Rect.Y - tileSize, tile.Rect.Width, tile.Rect.Height * 2);
                }
            }

            return(tileMap);
        }