public Map CreateDebugMap(Random r) { var mapSize = new MapSize(8, 8); var natureTiles = TileTerrain.Nature.ToArray(); var terrainSize = 3; var map = new Map(mapSize.X, mapSize.Y, Location.Square(mapSize) .Select(p => p.Y >= mapSize.Y - terrainSize && p.X < 10 ? new Tile(p, natureTiles[p.X / 2], new List <TileObject>()) : new Tile(p, TileTerrain.Road, new List <TileObject>()))); AddBuildings(map, (x, i) => new Dwelling((UnitType)i, x, x + new Vector2i(0, 1), 1000), Enumerable.Range(2, 4).Select(x => new Location(4, x))); AddBuildings(map, (x, i) => new Mine((Resource)i, x, x + new Vector2i(1, 0)), Enumerable.Range(1, 4).Select(y => new Location(y, mapSize.X - 2))); Add(map, (x, i) => NeutralArmy.BuildRandom(x, (i + 1) * 50, r), Enumerable.Range(1, 7).Select(x => new Location(0, x))); Add(map, (x, i) => new ResourcePile((Resource)(i % 4), 1000, x), Enumerable.Range(2, 6).Select(y => new Location(y, 0)) .Union(Enumerable.Range(2, 6).Select(y => new Location(y, 1)))); map[new Location(3, 4)].AddObject(new Wall(new Location(3, 4))); return(map); }
private HommMapGenerator.BuilderOnSelectEntities AddGuards( HommMapGenerator.BuilderOnSelectEntities builder, Random random) { var guardsConfig = new SpawnerConfig(Location.Zero, 12.5, 100, 1); return(builder.With(new DistanceSpawner(random, guardsConfig, (map, maze, p) => NeutralArmy.BuildRandom(p, 400, random), symmetricFactory: (original, location) => ((NeutralArmy)original).Copy(location)))); }
private HommMapGenerator.BuilderOnSelectEntities AddEnemies( HommMapGenerator.BuilderOnSelectEntities builder, Random random) { var easyTier = new SpawnerConfig(Location.Zero, 0, 40, 1); var hardTier = new SpawnerConfig(Location.Zero, 40, 100, 1); return(builder .With(new GraphSpawner(random, easyTier, (map, maze, location) => NeutralArmy.BuildRandom(location, 75, random), (map, maze, location) => map[location].Any(x => x is Mine), (original, location) => ((NeutralArmy)original).Copy(location))) .With(new GraphSpawner(random, hardTier, (map, maze, location) => NeutralArmy.BuildRandom(location, 225, random), (map, maze, location) => map[location].Any(x => x is Mine), (original, location) => ((NeutralArmy)original).Copy(location)))); }