public Biome(ILocationScheme locationScheme) { LocationScheme = locationScheme ?? throw new ArgumentNullException(nameof(locationScheme)); _nodes = new List <SectorNode>(); _edges = new List <IGraphEdge>(); }
public async Task <IBiome> InitBiomeAsync(ILocationScheme locationScheme) { var biom = new Biome(locationScheme); await CreateStartSectorAsync(biom).ConfigureAwait(false); return(biom); }
private static void FillRegion(int regionSize, ILocationScheme regionScheme, GlobeRegion currentRegion) { for (var x = 0; x < regionSize; x++) { for (var y = 0; y < regionSize; y++) { currentRegion.AddNode(new GlobeRegionNode(x, y, regionScheme) { IsBorder = x == 0 || x == regionSize - 1 || y == 0 || y == regionSize - 1 }); } } }
public ISector Create(ISectorMap map, ILocationScheme locationScheme) { var actorManager = new ActorManager(); var propContainerManager = new StaticObjectManager(); var sector = new Sector(map, actorManager, propContainerManager, _dropResolver, _schemeService, _equipmentDurableService) { Scheme = locationScheme }; return(sector); }
/// <summary>Засчитать один прожитый шаг.</summary> public void CountTurn(ILocationScheme sectorScheme) { _turnCounter += TURN_INC; if (_turnCounter >= 1) { _turnCounter -= 1; BaseScores++; } Turns++; if (!PlaceTypes.ContainsKey(sectorScheme)) { PlaceTypes.Add(sectorScheme, 0); } PlaceTypes[sectorScheme]++; }
/// <summary> /// Создаёт текущий сектор по указанному генератору и настройкам. /// </summary> public async Task CreateSectorAsync() { var regionNode = _humanPlayer.GlobeNode; ILocationScheme scheme = null; if (_humanPlayer.GlobeNode == null) { scheme = _schemeService.GetScheme <ILocationScheme>(INTRO_LOCATION_SID); } else { scheme = _humanPlayer.GlobeNode.Scheme; } if (scheme.SectorLevels != null) { ISectorSubScheme sectorLevelScheme; if (_humanPlayer.SectorSid == null) { sectorLevelScheme = scheme.SectorLevels.SingleOrDefault(x => x.IsStart); } else { sectorLevelScheme = scheme.SectorLevels.SingleOrDefault(x => x.Sid == _humanPlayer.SectorSid); } CurrentSector = await _generator.GenerateDungeonAsync(sectorLevelScheme); } else if (regionNode.IsTown) { CurrentSector = await _generator.GenerateTownQuarterAsync(_worldManager.Globe, regionNode); } else { CurrentSector = await _generator.GenerateWildAsync(_worldManager.Globe, regionNode); } CurrentSector.Scheme = scheme; }
/// <summary> /// Конструктор узла провинции. /// </summary> /// <param name="x"> Координата X в сетке гексов. </param> /// <param name="y"> Координата Y в сетке гексов. </param> /// <param name="scheme"> Схема провинции. </param> public GlobeRegionNode(int x, int y, ILocationScheme scheme) : base(x, y) { Scheme = scheme; }
public SectorSchemeResult(ILocationScheme location, ISectorSubScheme sector) { LocationScheme = location ?? throw new ArgumentNullException(nameof(location)); SectorScheme = sector ?? throw new ArgumentNullException(nameof(sector)); }