コード例 #1
0
        public async Task Create_RealRandom_NoOverlapNodesAsync()
        {
            // ARRANGE
            var dice          = new Dice(3245);
            var randomSource  = new RoomGeneratorRandomSource(dice);
            var roomGenerator = new RoomGenerator(randomSource);
            var factory       = new RoomMapFactory(roomGenerator);
            var sectorScheme  = CreateSectorScheme();



            // ACT
            var map = await factory.CreateAsync(sectorScheme);



            // ARRANGE
            var hexNodes = map.Nodes.Cast <HexNode>().ToArray();

            foreach (var node in hexNodes)
            {
                var sameNode = hexNodes.Where(x => x != node && x.OffsetX == node.OffsetX && x.OffsetY == node.OffsetY);
                sameNode.Should().BeEmpty();
            }
        }
コード例 #2
0
 public SwitchMapFactorySelector(RoomMapFactory roomMapFactory,
                                 CellularAutomatonMapFactory cellularAutomatonMapFactory,
                                 OpenMapFactory openMapFactory)
 {
     RoomMapFactory = roomMapFactory;
     CellularAutomatonMapFactory = cellularAutomatonMapFactory;
     OpenMapFactory = openMapFactory;
 }
コード例 #3
0
        public void Create_SimpleSnakeMaze_NoExceptions()
        {
            var roomGenerator = new TestSnakeRoomGenerator();
            var factory       = new RoomMapFactory(roomGenerator);
            var sectorScheme  = CreateSectorScheme();

            // ACT
            Func <Task> act = async() =>
            {
                var map = await factory.CreateAsync(sectorScheme);
            };

            // ARRANGE
            act.Should().NotThrow();
        }
コード例 #4
0
        public async Task Create_DifferentMapsRealDice_NoExceptions(int diceSeed)
        {
            // ARRANGE
            var linearDice    = new LinearDice(diceSeed);
            var gaussDice     = new GaussDice(diceSeed);
            var randomSource  = new RoomGeneratorRandomSource(linearDice, gaussDice);
            var roomGenerator = new RoomGenerator(randomSource);
            var mapFactory    = new RoomMapFactory(roomGenerator);

            var botPlayer    = CreateBotPlayer();
            var generator    = CreateGenerator(botPlayer, mapFactory);
            var sectorScheme = CreateSectorScheme();

            // ACT
            await generator.GenerateDungeonAsync(sectorScheme).ConfigureAwait(false);
        }
コード例 #5
0
        public void Create_SimpleSnakeMaze_NoExceptions()
        {
            var roomGenerator = new TestSnakeRoomGenerator();
            var factory       = new RoomMapFactory(roomGenerator);
            var sectorScheme  = CreateSectorScheme();

            var sectorFactoryOptions = new SectorMapFactoryOptions(sectorScheme.MapGeneratorOptions);

            // ACT
            Func <Task> act = async() =>
            {
                await factory.CreateAsync(sectorFactoryOptions).ConfigureAwait(false);
            };

            // ARRANGE
            act.Should().NotThrow();
        }
コード例 #6
0
        public void Create_DifferentMapsRealDice_NoExceptions(int diceSeed)
        {
            // ARRANGE
            var dice          = new Dice(diceSeed);
            var randomSource  = new RoomGeneratorRandomSource(dice);
            var roomGenerator = new RoomGenerator(randomSource);
            var mapFactory    = new RoomMapFactory(roomGenerator);

            var schemeService = CreateSchemeService();
            var botPlayer     = CreateBotPlayer();
            var generator     = CreateGenerator(schemeService, botPlayer, mapFactory);
            var sectorScheme  = CreateSectorScheme();



            // ACT
            generator.GenerateDungeonAsync(sectorScheme).Wait();
        }
コード例 #7
0
        public void Create_DifferentMaps_NoExceptions()
        {
            // ARRANGE
            var roomGenerator = new TestSnakeRoomGenerator();
            var mapFactory    = new RoomMapFactory(roomGenerator);

            var botPlayer    = CreateBotPlayer();
            var generator    = CreateGenerator(botPlayer, mapFactory);
            var sectorScheme = CreateSectorScheme();

            // ACT
            Func <Task> act = async() =>
            {
                var sector = await generator.GenerateDungeonAsync(sectorScheme).ConfigureAwait(false);
            };

            // ASSERT
            act.Should().NotThrow();
        }
コード例 #8
0
        public void Create_RealRoomRandom_NoExceptions(int diceSeed)
        {
            // ARRANGE
            var leanerDice    = new LinearDice(diceSeed);
            var gaussDice     = new GaussDice(diceSeed);
            var randomSource  = new RoomGeneratorRandomSource(leanerDice, gaussDice);
            var roomGenerator = new RoomGenerator(randomSource);
            var factory       = new RoomMapFactory(roomGenerator);
            var sectorScheme  = CreateSectorScheme();

            // ACT
            Func <Task> act = async() =>
            {
                var map = await factory.CreateAsync(sectorScheme);
            };

            // ARRANGE
            act.Should().NotThrow();
        }
コード例 #9
0
        public async Task Create_DifferentMaps_NoExceptions()
        {
            // ARRANGE
            var roomGenerator = new TestSnakeRoomGenerator();
            var mapFactory    = new RoomMapFactory(roomGenerator);

            var generator    = CreateGenerator(mapFactory);
            var sectorScheme = CreateSectorScheme();
            var sectorNode   = CreateSectorNode(sectorScheme);

            // ACT
            Func <Task> act = async() =>
            {
                await generator.GenerateAsync(sectorNode).ConfigureAwait(false);
            };

            // ASSERT
            await act.Should().NotThrowAsync().ConfigureAwait(false);
        }
コード例 #10
0
        public async Task Create_RealRoomRandom_NoExceptions(int diceSeed)
        {
            // ARRANGE
            var leanerDice    = new LinearDice(diceSeed);
            var gaussDice     = new GaussDice(diceSeed);
            var randomSource  = new RoomGeneratorRandomSource(leanerDice, gaussDice);
            var roomGenerator = new RoomGenerator(randomSource);
            var factory       = new RoomMapFactory(roomGenerator);
            var sectorScheme  = CreateSectorScheme();

            var sectorFactoryOptions = new SectorMapFactoryOptions(sectorScheme.MapGeneratorOptions);

            // ACT
            Func <Task> act = async() =>
            {
                await factory.CreateAsync(sectorFactoryOptions).ConfigureAwait(false);
            };

            // ARRANGE
            await act.Should().NotThrowAsync().ConfigureAwait(false);
        }
コード例 #11
0
        public async Task Create_RealRoomRandom_NoOverlapNodesAsync()
        {
            // ARRANGE
            var linearDice    = new LinearDice(3245);
            var gaussDice     = new GaussDice(3245);
            var randomSource  = new RoomGeneratorRandomSource(linearDice, gaussDice);
            var roomGenerator = new RoomGenerator(randomSource);
            var factory       = new RoomMapFactory(roomGenerator);
            var sectorScheme  = CreateSectorScheme();

            var sectorFactoryOptions = new SectorMapFactoryOptions(sectorScheme.MapGeneratorOptions);

            // ACT
            var map = await factory.CreateAsync(sectorFactoryOptions).ConfigureAwait(false);

            // ARRANGE
            var hexNodes = map.Nodes.Cast <HexNode>().ToArray();

            foreach (var node in hexNodes)
            {
                var sameNode = hexNodes.Where(x => x != node && x.OffsetCoords == node.OffsetCoords);
                sameNode.Should().BeEmpty();
            }
        }