/// <summary> /// Generate land /// </summary> /// <param name="map"></param> public LandMap Generate(LandMap map) { foreach (var zoneMarkup in _land.Zones.Where(z => z.Cell.IsClosed)) { ZoneGenerator generator = null; if (zoneMarkup.Type == ZoneType.Hills) { generator = new HillsGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Lake) { generator = new LakeGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Forest) { generator = new ForestGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Mountains) { generator = new MountainsGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Snow) { generator = new SnowGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type >= ZoneType.Hills && zoneMarkup.Type <= ZoneType.Lake) { generator = new DefaultGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type >= ZoneType.Influence1 && zoneMarkup.Type <= ZoneType.Influence8) { generator = new FlatGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Checkboard) { generator = new CheckboardGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Cone) { generator = new ConeGenerator(zoneMarkup, _land, _settings); } else if (zoneMarkup.Type == ZoneType.Slope) { generator = new SlopeGenerator(zoneMarkup, _land, _settings); } if (generator != null) { var zoneMap = generator.Generate(); map.Add(zoneMap); } } return(map); }
private static void GenerateFlatTestMap() { var flatGenerator = new FlatGenerator(300, 300, 0.5d); var node = new GeneratorNode(flatGenerator); node.Execute(); var bitmap = node.Result.AsBitmap(); var filename = GetFilename("generated.png"); bitmap.Save(filename, ImageFormat.Png); Process.Start(filename); }
private HeightMap GenerateTerrain(int?seed = null) { var generator1 = new FlatGenerator(1000, 1000, 1); var generator2 = new DSNoiseGenerator(1000, 1000, seed: seed); var node1 = new GeneratorNode(generator1); var node2 = new GeneratorNode(generator2); var blend = new BlendingNode(BlendModes.Difference); blend.AddDependency(node1); blend.AddDependency(node2); blend.Execute(); return(blend.Result); }