Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }