public MapViewForm() { InitializeComponent(); Size = new Size(1000, 700); WindowState = FormWindowState.Maximized; DoubleBuffered = true; var r = new Random(); var easyTier = new SpawnerConfig(SigmaIndex.Zero, 3, 30, 0.5); var mediumTier = new SpawnerConfig(SigmaIndex.Zero, 30, 1000, 0.5); var hardTier = new SpawnerConfig(SigmaIndex.Zero, 14, 16, 0.5); var nightmare = new SpawnerConfig(SigmaIndex.Zero, 16.5, 20, 0.5); var gen = HommMapGenerator .From(new DiagonalMazeGenerator(r)) .With(new BfsRoadGenerator(r, TileTerrain.Road) .Over(new VoronoiTerrainGenerator(r, TileTerrain.Nature.ToArray()))) .With(new TopologicSpawner(r, mediumTier, p => new Mine(Resource.Crystals, p))) .With(new MinDistanceSpawner(r, hardTier, p => new Mine(Resource.Ore, p))) .With(new TopologicSpawner(r, easyTier, p => new Mine(Resource.Rubles, p))) .And(new MinDistanceSpawner(r, nightmare, p => new Mine(Resource.Gems, p))); Map map = null; var generateButton = new Button { Text = "Generate!", Location = new Point(150, 0) }; var mapSizeBox = new ComboBox(); for (var size = 4; size < 20; ++size) { mapSizeBox.Items.Add(2 * size); } mapSizeBox.SelectedIndex = 5; generateButton.Click += (s, e) => { mapSize = (int)mapSizeBox.SelectedItem; map = gen.GenerateMap(mapSize); this.Invalidate(); }; Controls.Add(mapSizeBox); Controls.Add(generateButton); Paint += (s, e) => { if (map != null) { foreach (var tile in map) { DrawTile(tile, e.Graphics); } } }; }
public Map CreateMap(Random r) { HommMapGenerator generator = CreateGenerator(r); Map map = null; while (map == null) { try { map = generator.GenerateMap(mapSize); } catch { } } return(map); }
public HommMapGenerator CreateGenerator(Random r) { var builder = HommMapGenerator .From(new DiagonalMazeGenerator(r)) .With(new BfsRoadGenerator(r, TileTerrain.Road) .Over(new VoronoiTerrainGenerator(r, TileTerrain.Nature.ToArray()))); builder = AddGuards(builder, r); builder = AddMines(builder, r); builder = AddDwellings(builder, r); builder = AddPiles(builder, r); builder = AddEnemies(builder, r); return(builder.CreateGenerator()); }
public static Map CreateMap(Random random) { var easyTier = new SpawnerConfig(Location.Zero, 3, 30, 0.5); var mediumTier = new SpawnerConfig(Location.Zero, 30, 1000, 0.5); var hardTier = new SpawnerConfig(Location.Zero, 14, 16, 0.5); var nightmare = new SpawnerConfig(Location.Zero, 16.5, 20, 0.5); var mapGenerator = HommMapGenerator .From(new DiagonalMazeGenerator(random)) .With(new BfsRoadGenerator(random, TileTerrain.Road) .Over(new VoronoiTerrainGenerator(random, TileTerrain.Nature.ToArray()))) .With(new GraphSpawner(random, mediumTier, p => new Mine(Resource.Crystals, p))) .With(new DistanceSpawner(random, hardTier, p => new Mine(Resource.Ore, p))) .With(new GraphSpawner(random, easyTier, p => new Mine(Resource.Rubles, p))) .And(new DistanceSpawner(random, nightmare, p => new Mine(Resource.Gems, p))); return(mapGenerator.GenerateMap(18)); }