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