Example #1
0
        public async Task CreateSectorAsync()
        {
            var scheme = _schemeService.GetScheme <ILocationScheme>(LOCATION_SID);

            var sectorLevelScheme = scheme.SectorLevels[0];

            CurrentSector = await _generator.GenerateDungeonAsync(sectorLevelScheme);

            CurrentSector.Scheme = scheme;
        }
        /// <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;
        }