public static void Generate(int seed, ref Map map) { var generateSeed = seed > 0 ? seed : 1234; var rng = new Random(generateSeed); map.tiles = new Tile[map.Width * map.Height]; for (var itY = 0; itY < map.Height; ++itY) { for (var itX = 0; itX < map.Width; ++itX) { var idx = GetTileIndex(itX, itY, map.Width); var c = TileChars[rng.Next(TileChars.Length)]; map.tiles[idx] = new Tile { Location = new CVec2(itX, itY), Layers = new Dictionary <LayerType, TileLayer>(), TileType = WorldLib.ConvertCharToTileType(c), Elevation = rng.Next(-20, 55), }; var heatLayer = new HeatLayer { Heat = rng.Next(-20, 55) }; map.tiles[idx].Layers.Add(LayerType.Heat, heatLayer); } } VoronoiLib.Voronoi(generateSeed, map.Dimensions, ref map); }
public string Get(int width, int height, int seed) { int worldWidth = width > 0 ? width : 18; int worldHeight = height > 0 ? height : 15; int worldSeed = seed > 0 ? seed : 0; int total = worldWidth * worldHeight; _logger.LogInformation("generating" + total.ToString()); Map ceData = new Map(worldWidth, worldHeight); WorldGenerator.Generate(worldSeed, ref ceData); var sb = new System.Text.StringBuilder(); sb.Append('{', 1); sb.AppendLine(); sb.Append(" \"width\": "); sb.Append(ceData.Width.ToString()); sb.AppendLine(","); sb.Append(" \"height\": "); sb.Append(ceData.Height.ToString()); sb.AppendLine(","); Func <Tile, string> tileCharFunc = (t) => { TileType tileType = t.TileType; return(WorldLib.ConvertTileTypeToChar(tileType).ToString()); }; Func <Tile, string> tileElevationFunc = (t) => { return(t.Elevation.ToString()); }; Func <Tile, string> tileColorFunc = (t) => { if (t.Layers.ContainsKey(LayerType.Voronoi)) { VoronoiLayer layer = t.Layers[LayerType.Voronoi] as VoronoiLayer; return(layer.VoronoiColor.ToWideNumberString()); } else { return("#000000"); } }; GetProperty("tileChar", tileCharFunc, false, true, ref ceData, ref sb); GetProperty("tileElevation", tileElevationFunc, true, false, ref ceData, ref sb); GetProperty("tileColor", tileColorFunc, true, false, ref ceData, ref sb); sb.AppendLine(" \"eof\": \"eof\""); sb.Append('}', 1); return(sb.ToString()); }