Esempio n. 1
0
        public Biome(ILocationScheme locationScheme)
        {
            LocationScheme = locationScheme ?? throw new ArgumentNullException(nameof(locationScheme));

            _nodes = new List <SectorNode>();
            _edges = new List <IGraphEdge>();
        }
Esempio n. 2
0
        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
             });
         }
     }
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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]++;
        }
Esempio n. 6
0
        /// <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;
        }
Esempio n. 7
0
 /// <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;
 }
Esempio n. 8
0
 public SectorSchemeResult(ILocationScheme location, ISectorSubScheme sector)
 {
     LocationScheme = location ?? throw new ArgumentNullException(nameof(location));
     SectorScheme   = sector ?? throw new ArgumentNullException(nameof(sector));
 }