public JogadorSala Adicionar(JogadorSala jogadorSala)
        {
            this.Context.JogadoresSala.Add(jogadorSala);
            this.Context.SaveChanges();

            return(jogadorSala);
        }
        private string AlteraVezJogadores(int idJogadorSala)
        {
            // Altera termina a vez do jogador atual
            var jogadorSalaAtual = _jogadorSalaBusiness.Obter(idJogadorSala);

            if (jogadorSalaAtual == default)
            {
                return(String.Empty);
            }

            // Lista os jogadores da sala
            var jogadores = _jogadorSalaBusiness.Listar(jogadorSalaAtual.IdSala).ToList();

            // Lógica para encontrar qual o próximo jogador
            JogadorSala proximoJogadorSala = ObterProximoJogador(jogadorSalaAtual, jogadores);

            // Dá a vez para o próximo jogador
            jogadorSalaAtual.FinalizarTurno();
            proximoJogadorSala.IniciarTurno();

            _jogadorSalaBusiness.Alterar(jogadorSalaAtual);
            _jogadorSalaBusiness.Alterar(proximoJogadorSala);

            // Mensagem para o histórico
            var nickJogador        = _jogadorBusiness.Obter(jogadorSalaAtual.IdJogador);
            var nickProximoJogador = _jogadorBusiness.Obter(proximoJogadorSala.IdJogador);

            _historicoBusiness.Adicionar(new Historico(proximoJogadorSala.IdSala, $"Player {nickJogador.Descricao} finalizou a rodada, {nickProximoJogador.Descricao}, é a sua vez!"));
            proximoJogadorSala.HabilitarPalpite();

            return(Convert.ToString(proximoJogadorSala.Id));
        }
        public JogadorSala Alterar(JogadorSala jogador)
        {
            var jogadorSala = this.Context.JogadoresSala.SingleOrDefault(_ => _.Id == jogador.Id && _.Ativo);

            if (jogadorSala != default)
            {
                jogadorSala.Alterar(jogador);
                this.Context.SaveChanges();
            }

            return(jogadorSala);
        }
        private JogadorSala ObterProximoJogador(JogadorSala jogadorSalaAtual, List <JogadorSala> jogadores)
        {
            jogadores = jogadores.Where(_ => _.Jogando).ToList();

            if (jogadores.Any(_ => _.NumeroOrdem > jogadorSalaAtual.NumeroOrdem))
            {
                return(jogadores.OrderBy(_ => _.NumeroOrdem).First(_ => _.NumeroOrdem > jogadorSalaAtual.NumeroOrdem));
            }
            else
            {
                return(jogadores.OrderBy(_ => _.NumeroOrdem).First());
            }
        }
        private void DistribuirCartasJogador(JogadorSala jogadorSala)
        {
            var jogadoresSala = _jogadorSalaBusiness.Listar(jogadorSala.IdSala).Where(_ => _.Jogando).ToList();

            var armasJogador     = _armaJogadorSalaBusiness.Listar(jogadorSala.Id);
            var locaisJogador    = _localJogadorSalaBusiness.Listar(jogadorSala.Id);
            var suspeitosJogador = _suspeitoJogadorSalaBusiness.Listar(jogadorSala.Id);

            _armaJogadorSalaBusiness.DesabilitarArmasJogador(jogadorSala.Id);
            _localJogadorSalaBusiness.DesabilitarLocaisJogador(jogadorSala.Id);
            _suspeitoJogadorSalaBusiness.DesabilitarSuspeitosJogador(jogadorSala.Id);

            var armas     = armasJogador.Select(_ => _.Arma).ToList();
            var locais    = locaisJogador.Select(_ => _.Local).ToList();
            var suspeitos = suspeitosJogador.Select(_ => _.Suspeito).ToList();

            DistribuirCartasJogadores(jogadoresSala, armas, locais, suspeitos);
        }
Esempio n. 6
0
 public JogadorSala Alterar(JogadorSala jogadorSala)
 {
     return(_jogadorSalaRepository.Alterar(jogadorSala));
 }