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