コード例 #1
0
        public Character CreateCustomCharacter(CreateCustomCharacterRequest characterRequest)
        {
            var character = new Character
            {
                Name     = characterRequest.Name,
                Sex      = characterRequest.Sex,
                IsActive = true,
                IsNpc    = characterRequest.IsNpc,

                Ad  = characterRequest.Stats.Ad,
                Cha = characterRequest.Stats.Cha,
                Cou = characterRequest.Stats.Cou,
                Fo  = characterRequest.Stats.Fo,
                Int = characterRequest.Stats.Int,

                Ev = characterRequest.BasicStatsOverrides.Ev,
                Ea = characterRequest.BasicStatsOverrides.Ea,
                // FIXME: maxEv, maxEa
                // FIXME: At/Prd

                Level      = characterRequest.Level,
                Experience = characterRequest.Experience,

                FatePoint = characterRequest.FatePoint,

                OriginId = characterRequest.OriginId,
            };

            character.Jobs = characterRequest.JobIds.Select(jobId => new CharacterJob
            {
                JobId = jobId
            }).ToList();

            character.Skills = characterRequest.SkillIds.Select(x => new CharacterSkill
            {
                SkillId = x
            }).ToList();
            character.Specialities = characterRequest.SpecialityIds.SelectMany(x => x.Value).Select(specialityId => new CharacterSpeciality
            {
                SpecialityId = specialityId
            }).ToList();

            return(character);
        }
コード例 #2
0
        public async Task <CreatedActionResult <CreateCharacterResponse> > PostCreateCustomCharacterAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            CreateCustomCharacterRequest request
            )
        {
            try
            {
                var character = await _characterService.CreateCustomCharacterAsync(executionContext, request);

                return(_mapper.Map <CreateCharacterResponse>(character));
            }
            catch (ForbiddenAccessException ex)
            {
                throw new HttpErrorException(StatusCodes.Status403Forbidden, ex);
            }
            catch (GroupNotFoundException ex)
            {
                throw new HttpErrorException(StatusCodes.Status400BadRequest, ex);
            }
        }
コード例 #3
0
        public async Task <Character> CreateCustomCharacterAsync(NaheulbookExecutionContext executionContext, CreateCustomCharacterRequest request)
        {
            using var uow = _unitOfWorkFactory.CreateUnitOfWork();

            var character = _characterFactory.CreateCustomCharacter(request);

            if (request.GroupId.HasValue)
            {
                var group = await uow.Groups.GetAsync(request.GroupId.Value);

                if (group == null)
                {
                    throw new GroupNotFoundException(request.GroupId.Value);
                }
                _authorizationUtil.EnsureIsGroupOwner(executionContext, @group);
                character.Group = @group;
            }

            character.OwnerId = executionContext.UserId;
            uow.Characters.Add(character);

            await uow.SaveChangesAsync();

            return(character);
        }