コード例 #1
0
        /// <summary>
        /// Создание переходов на основе схемы.
        /// </summary>
        /// <param name="sectorScheme"> Схема сектора. </param>
        /// <returns> Набор объектов переходов. </returns>
        public static IEnumerable <RoomTransition> CreateTransitions(ISectorSubScheme sectorScheme)
        {
            if (sectorScheme.TransSectorSids == null)
            {
                return(new[] { RoomTransition.CreateGlobalExit() });
            }

            return(sectorScheme.TransSectorSids.Select(sid => new RoomTransition(sid)));
        }
コード例 #2
0
        /// <summary>
        /// Создаёт сектор квартала города.
        /// </summary>
        /// <param name="globe">Объект мира.</param>
        /// <param name="globeNode">Узел провинции, на основе которого генерируется сектор.</param>
        /// <returns>
        /// Возвращает созданный сектор.
        /// </returns>
        /// <remarks>
        /// Нужно будет передавать параметры зданий, наличие персонажей и станков для крафта.
        /// Вместо общей информации об узле.
        /// </remarks>
        public async Task <ISector> GenerateTownQuarterAsync(Globe globe, GlobeRegionNode globeNode)
        {
            var map = await SquareMapFactory.CreateAsync(10);

            var sector = _sectorFactory.Create(map);


            var traderDropTable = _schemeService.GetScheme <IDropTableScheme>("trader");
            var trader          = new Trader(traderDropTable, map.Nodes.ElementAt(10), _dropResolver);

            _traderManager.Add(trader);
            map.HoldNode(trader.Node, trader);

            map.Transitions.Add(map.Nodes.Last(), RoomTransition.CreateGlobalExit());

            return(sector);
        }
コード例 #3
0
        /// <summary>
        /// Создаёт сектор квартала города.
        /// </summary>
        /// <param name="globe">Объект мира.</param>
        /// <param name="globeNode">Узел провинции, на основе которого генерируется сектор.</param>
        /// <returns>
        /// Возвращает созданный сектор.
        /// </returns>
        /// <remarks>
        /// Нужно будет передавать параметры зданий, наличие персонажей и станков для крафта.
        /// Вместо общей информации об узле.
        /// </remarks>
        public async Task <ISector> GenerateTownQuarterAsync(Globe globe, GlobeRegionNode globeNode)
        {
            var townScheme = new TownSectorScheme
            {
                RegionCount = 10,
                RegionSize  = 10
            };

            var mapFactory = _mapFactorySelector.GetMapFactory(townScheme);

            var map = await mapFactory.CreateAsync(townScheme);

            var sector = _sectorFactory.Create(map);

            _citizenGenerator.CreateCitizens(sector, _botPlayer, sector.Map.Regions);

            //TODO Выходы нужно генерировать в карте, аналогично подземельям.
            map.Transitions.Add(map.Nodes.Last(), RoomTransition.CreateGlobalExit());

            return(sector);
        }