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); } }
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); }