Пример #1
0
        public async Task <IActionResult> AddPersonagemHabilidadeAsync(PersonagemHabilidade novoPersonagemHabilidade)
        {
            Personagem personagem = await _context.Personagens
                                    .Include(p => p.Arma)
                                    .Include(p => p.PersonagemHabilidades).ThenInclude(ps => ps.Habilidade)
                                    .FirstOrDefaultAsync(p => p.Id == novoPersonagemHabilidade.PersonagemId &&
                                                         p.Usuario.Id == ObterUsuarioId());

            if (personagem == null)
            {
                return(BadRequest("Personagem não encontrado para o usuário em questão"));
            }

            Habilidade habilidade = await _context.Habilidades
                                    .FirstOrDefaultAsync(s => s.Id == novoPersonagemHabilidade.HabilidadeId);

            if (habilidade == null)
            {
                BadRequest("Habilidade não encontrada");
            }

            PersonagemHabilidade ph = new PersonagemHabilidade();

            ph.Personagem = personagem;
            ph.Habilidade = habilidade;

            await _context.PersonagemHabilidades.AddAsync(ph);

            await _context.SaveChangesAsync();

            return(Ok(ph));
        }
Пример #2
0
        public IActionResult Delete(PersonagemHabilidade ph)
        {
            PersonagemHabilidade phRemover = _context.PersonagemHabilidades
                                             .FirstOrDefault(phBusca => phBusca.PersonagemId == ph.PersonagemId &&
                                                             phBusca.HabilidadeId == ph.HabilidadeId);

            if (phRemover == null)
            {
                return(BadRequest("Personagem ou habilidades não encontrados com os Id's informados"));
            }

            _context.PersonagemHabilidades.Remove(phRemover);
            _context.SaveChanges();

            return(Ok("Dados removidos com sucesso."));
        }
Пример #3
0
        public async Task <IActionResult> AtaqueComHabilidade(Disputa d)
        {
            Personagem atacante = await _context.Personagens
                                  .Include(p => p.PersonagemHabilidades).ThenInclude(ph => ph.Habilidade)
                                  .FirstOrDefaultAsync(p => p.Id == d.AtacanteId);

            Personagem oponente = await _context.Personagens
                                  .FirstOrDefaultAsync(p => p.Id == d.OponenteId);

            PersonagemHabilidade ph = await _context.PersonagemHabilidades
                                      .Include(p => p.Habilidade)
                                      .FirstOrDefaultAsync(phBusca => phBusca.HabilidadeId == d.HabilidadeId);

            if (ph == null)
            {
                d.Narracao = $"{atacante.Nome} não possui esta habilidade.";
            }
            else
            {
                int dano = ph.Habilidade.Dano + (new Random().Next(atacante.Inteligencia));
                dano = dano - new Random().Next(oponente.Defesa);

                if (dano > 0)
                {
                    oponente.PontosVida = oponente.PontosVida - (int)dano;
                }
                if (oponente.PontosVida <= 0)
                {
                    d.Narracao += $"{oponente.Nome} foi derrotado";
                }

                _context.Personagens.Update(oponente);
                await _context.SaveChangesAsync();

                StringBuilder dados = new StringBuilder();
                dados.AppendFormat(" Atacante: {0}", atacante.Nome);
                dados.AppendFormat(" Oponente: {0}", oponente.Nome);
                dados.AppendFormat(" Pontos de vida do atacante: {0}", atacante.PontosVida);
                dados.AppendFormat(" Pontos de vida do oponente: {0}", oponente.PontosVida);
                dados.AppendFormat(" Dano: {0}", dano);

                d.Narracao += dados.ToString();
            }
            return(Ok(d));
        }