コード例 #1
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);
        }
コード例 #2
0
        /// <summary>
        /// Создаёт кость и фиксирует зерно рандома.
        /// Если Зерно рандома не задано, то оно выбирается случайно.
        /// </summary>
        /// <returns> Экземпляр кости на основе выбранного или указанного ерна рандома. </returns>
        private GaussDice CreateRandomSeedAndGaussDice()
        {
            GaussDice dice;

            if (DiceSeed == null)
            {
                var diceSeedFact = new Random().Next(int.MaxValue);
                DiceSeed = diceSeedFact;
                dice     = new GaussDice(diceSeedFact);
            }
            else
            {
                dice = new GaussDice(DiceSeed.Value);
            }

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

            // 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();
            }
        }