コード例 #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
        private static IRoomGeneratorRandomSource CreateRoomGeneratorRandomSource(IServiceProvider factory)
        {
            var localLinearDice   = factory.GetRequiredService <LinearDice>();
            var localRoomSizeDice = factory.GetRequiredService <ExpDice>();
            var randomSource      = new RoomGeneratorRandomSource(localLinearDice, localRoomSizeDice);

            return(randomSource);
        }
コード例 #3
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);
        }
コード例 #4
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();
        }
コード例 #5
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();
        }
コード例 #6
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);
        }
コード例 #7
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();
            }
        }