protected virtual void OlharTruco(Jogador jogador, Truco pedido) { if (!validarTruco(jogador, pedido)) { return; } log.logar($"{jogador} pedindo {pedido}"); //Perguntando jogadores se aceitam Tuple <Jogador, Escolha> aceite = aceita(jogador, pedido); Truco pedidoAtual = pedido; switch (aceite.Item2) { case Escolha.correr: log.logar($"Equipe {Equipe.BuscaID(aceite.Item1.IDEquipe)} correu"); correu = aceite.Item1.IDEquipe; break; case Escolha.aceitar: this.pontos = pedido.pontosTruco(); EquipeTrucante = jogador.IDEquipe; log.logar($"{aceite.Item1} aceitou o truco"); break; case Escolha.aumentar: #region aumentar while (true) { this.pontos = pedidoAtual.pontosTruco(); pedidoAtual = pedidoAtual.proximo(); aceite = aceita(aceite.Item1, pedidoAtual); switch (aceite.Item2) { case Escolha.correr: correu = aceite.Item1.IDEquipe; return; case Escolha.aceitar: this.pontos = pedidoAtual.pontosTruco(); EquipeTrucante = jogador.IDEquipe; return; case Escolha.aumentar: if (pedidoAtual == Truco.jogo) { this.pontos = 15; EquipeTrucante = aceite.Item1.IDEquipe; return; } break; } } #endregion default: break; } }
private bool validarTruco(Jogador jogador, Truco pedido) { //Validando o truco if (jogadores.Where(x => Equipe.BuscaID(x.IDEquipe).PontosEquipe >= 12).Count() > 0) { log.logar($"Jogador {jogador} trucou na mão de doze. Perdeu"); correu = jogador.IDEquipe; return(false); } if (jogador.IDEquipe == EquipeTrucante) { log.logar($"Jogador {jogador} trucou, mas equipe já está trucando"); return(false); } if (this.pontos >= pedido.pontosTruco()) { log.logar($"Jogador {jogador} pediu {pedido}, mas a partida já está valendo mais"); return(false); } if (Truco.jogo.pontosTruco() == this.pontos) { log.logar("Partida já está valendo jogo"); return(false); } return(true); }