public async Task <Guid> CreateAsync(CharacterCreateDto entityDto) { using (var uow = UnitOfWorkProvider.Create()) { //attributes, inventory, equipment var inv = new InventoryDto() { Id = Guid.NewGuid(), MaxSize = 12 }; var attr = GenerateAttributesAccordingToCharacter(entityDto); var eq = new EquipmentDto() { Id = Guid.NewGuid() }; entityDto.CurrentHp = 10 * attr.Hp; entityDto.Inventory = inv; entityDto.Equipment = eq; entityDto.Attributes = attr; entityDto.Id = _characterService.Create(entityDto); await uow.Commit(); return(entityDto.Id); } }
public async Task Assign(UserDto user, CharacterCreateDto character) { var u = Mapper.Map <UserEditDto>(user); u.CharacterId = character.Id; await Update(u); }
/// <summary> /// Tries to create character from given <see cref="CharacterDto"/> /// </summary> public async Task <Character> CreateAsync(CharacterCreateDto characterDto) { try { if (_context.Characters.Any(x => x.Name.ToLower() == characterDto.Name.ToLower())) { throw new Exception("Character with given name already exists"); } var character = new Character { Name = characterDto.Name }; await _context.AddAsync(character); await _context.SaveChangesAsync(); return(await _context.Characters.FirstOrDefaultAsync(x => x.Id == character.Id)); } catch (DbUpdateException ex) { throw new Exception(ex.Message); } }
public async Task <IActionResult> CreateCharacter([FromBody] CharacterCreateDto dto) { var character = await _characterService.CreateAsync(dto); var characterDto = new CharacterDto(character); return(Ok(characterDto)); }
public AttributesDto GenerateAttributesAccordingToCharacter(CharacterCreateDto character) { var attr = new AttributesDto() { Id = Guid.NewGuid(), Damage = 10, Defense = 10, Hp = 15 }; float[] raceMultiplier; float[] schoolMultiplier; switch (character.Race) { case Race.Human: raceMultiplier = new[] { 1.8F, 1.8F, 1.8F }; break; case Race.Elf: raceMultiplier = new[] { 2.2F, 1.6F, 1.6F }; break; case Race.Dwarf: raceMultiplier = new[] { 1.7F, 2.0F, 2F }; break; default: throw new ArgumentOutOfRangeException(); } switch (character.School) { case School.Wolf: schoolMultiplier = new[] { 1.8F, 1.8F, 1.8F }; break; case School.Bear: schoolMultiplier = new[] { 1.5F, 2.0F, 2.0F }; break; case School.Cat: schoolMultiplier = new[] { 2.0F, 1.7F, 1.7F }; break; case School.Viper: schoolMultiplier = new[] { 1.9F, 1.9F, 1.7F }; break; case School.Griffin: schoolMultiplier = new[] { 1.7F, 1.8F, 2.0F }; break; default: throw new ArgumentOutOfRangeException(); } attr.Damage = (int)(attr.Damage * raceMultiplier[0] * schoolMultiplier[0]); attr.Defense = (int)(attr.Defense * raceMultiplier[1] * schoolMultiplier[1]); attr.Hp = (int)(attr.Hp * raceMultiplier[2] * schoolMultiplier[2]); return(attr); }
public async Task <ActionResult> Create(CharacterCreateDto model) { model.Id = Guid.Empty; var u = new UserDto { Id = model.UserId }; model.Id = await CharacterFacade.CreateAsync(model); await UserFacade.AssignAsync(u, model); return(RedirectToAction("Index", "Home")); }
public async Task <bool> AssignAsync(UserDto user, CharacterCreateDto character) { using (var uow = UnitOfWorkProvider.Create()) { if ((await _service.GetAsync(user.Id, false)) == null) { return(false); } await _service.Assign(user, character); await uow.Commit(); return(true); } }
public async Task <ActionResult <Character> > Post( [FromServices] ApiVersion apiVersion, [FromBody] CharacterCreateDto modeCreatelDto) { try { var model = _mapper.Map <Character>(modeCreatelDto); if (ModelState.IsValid) { var potterApi = new PotterApi(); var accio = await potterApi.AccioHouse(modeCreatelDto.House); if (accio) { await _repository.CreateCharacterAsync(model); await _repository.SaveChangesAsync(); var commandReadDto = _mapper.Map <CharacterReadDto>(model); return(CreatedAtRoute(nameof(GetById), new { Id = commandReadDto.Id, version = $"{apiVersion}" }, commandReadDto)); } else { ModelState.AddModelError("Accio", "Accio House didn't work"); return(BadRequest(ModelState)); } } else { return(BadRequest(ModelState)); } } catch (Exception) { return(StatusCode((int)HttpStatusCode.InternalServerError)); } }