Пример #1
0
        public async Task <IActionResult> Create(int optionId, CancellationToken cancellationToken)
        {
            var model = new DungeonOptionCreateViewModel
            {
                DeadEnd     = true,
                Corridor    = true,
                ItemsRarity = 1,
                UserId      = UserHelper.GetUserId(User.Claims),
                TrapPercent = 15,
                Level       = 1
            };

            if (optionId != 0)
            {
                var option = await _dungeonService.GetDungeonOptionAsync(optionId, cancellationToken);

                model            = _mapper.Map <DungeonOptionCreateViewModel>(option);
                model.AddDungeon = true;
                if (model.MonsterType[0].Equals("any"))
                {
                    model.MonsterType = null;
                }
            }

            await FillCreateModelDropDownsAsync(model, cancellationToken);

            return(View(model));
        }
Пример #2
0
        private async Task <string> GetMonsterTypeAsync(DungeonOptionCreateViewModel model, CancellationToken cancellationToken)
        {
            var monsterType = string.Join(",", model.MonsterType);
            var monsters    = await _optionService.ListOptionsAsync(cancellationToken, OptionKey.MonsterType);

            if (model.MonsterType.Length == monsters.Count)
            {
                monsterType = "any";
            }
            if (model.MonsterType.Length == 0)
            {
                monsterType = "none";
            }

            return(monsterType);
        }
Пример #3
0
        private async Task FillCreateModelDropDownsAsync(DungeonOptionCreateViewModel model, CancellationToken cancellationToken)
        {
            var options = await _optionService.ListOptionsAsync(cancellationToken);

            model.DungeonSizes = options.Where(om => om.Key == OptionKey.Size).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value
            }).ToList();
            model.DungeonDifficulties = options.Where(om => om.Key == OptionKey.Difficulty).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value
            }).ToList();
            model.PartyLevels    = GenerateIntSelectList(1, 21);
            model.PartySizes     = GenerateIntSelectList(1, 9);
            model.TreasureValues = options.Where(om => om.Key == OptionKey.TreasureValue).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value
            }).ToList();
            model.ItemsRarities = options.Where(om => om.Key == OptionKey.ItemsRarity).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value
            }).ToList();
            model.RoomDensities = options.Where(om => om.Key == OptionKey.RoomDensity).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value
            }).ToList();
            model.RoomSizes = options.Where(om => om.Key == OptionKey.RoomSize).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value
            }).ToList();
            model.MonsterTypes = options.Where(om => om.Key == OptionKey.MonsterType).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value, Selected = true
            }).ToList();
            model.TrapPercents = options.Where(om => om.Key == OptionKey.TrapPercent).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value, Selected = true
            }).ToList();
            model.DeadEnds        = GetBools();
            model.Corridors       = GetBools();
            model.RoamingPercents = options.Where(om => om.Key == OptionKey.RoamingPercent).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value, Selected = true
            }).ToList();
            model.Themes = options.Where(om => om.Key == OptionKey.Theme).Select(om => new SelectListItem {
                Text = om.Name, Value = om.Value, Selected = true
            }).ToList();
        }
Пример #4
0
        public async Task <IActionResult> Create(DungeonOptionCreateViewModel model, CancellationToken cancellationToken)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var optionModel = _mapper.Map <DungeonOptionModel>(model);
                    optionModel.MonsterType = await GetMonsterTypeAsync(model, cancellationToken);

                    var dungeon = await _dungeonService.CreateOrUpdateDungeonAsync(optionModel, model.AddDungeon, model.Level, cancellationToken);

                    return(Json(JsonSerializer.Serialize(dungeon)));
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "Error creating dungeon.");
                }
            }
            await FillCreateModelDropDownsAsync(model, cancellationToken);

            return(View(model));
        }