Пример #1
0
    public async void escolherCor(COR cor)
    {
        carta c = new carta();

        c._cor   = (int)cor;
        c._valor = (int)descarte.ultimaCarta().Valor;
        Jogada jogada = new Jogada();

        project.src.models.Carta au = new project.src.models.Carta();
        au.Cor           = cor;
        au.Valor         = descarte.ultimaCarta().Valor;
        jogada.carta     = c;
        jogada.jogadorId = jogadorPosicao;
        jogada.sala      = NumeroSala;
        au.setCor(cor);

        areaMensagens.mostraMensage("Cor escolhida: " + cor);
        await Client.EmitAsync("escolhe-cor", response =>
        {
            int resp = response.GetValue <int>();

            if (resp == 1)
            {
                descarte.ultimaCartaView().Carta = au;
                corSelecao.Visible = false;
                aguardarAnimacaoCompra();
            }
        }, jogada);
    }
Пример #2
0
    public void eventosClient()
    {
        Client.On("pronto-comecar", response =>
        {
            var cartas = response.GetValue <CartaRecebida[]>();
            List <Carta> listaDeCartas = new List <Carta>();
            foreach (var carta in cartas)
            {
                var c   = new Carta();
                c.Cor   = (COR)carta._cor;
                c.Valor = (VALOR)carta._valor;
                listaDeCartas.Add(c);
            }
            mao.addCartas(baralho.comprarCartas(listaDeCartas));
            var ordem = response.GetValue <String[]>(1);
            listaDeCartas.Clear();
            foreach (var carta in cartas)
            {
                listaDeCartas.Add(new Carta()
                {
                    Cor   = COR.SEMCOR,
                    Valor = VALOR.SEM_VALOR
                });
            }
            mao.ID = ID;
            if (ordem.Length == 2)
            {
                if (ordem[0] == ID)
                {
                    ordemJogada.Add(mao);
                    jogadorPosicao = 0;
                    var mao2       = GetNode <MaoView>("MaoJogador2");
                    mao2.ID        = ordem[1];
                    mao2.Jogo      = this;
                    ordemJogada.Add(mao2);
                }
                else
                {
                    var mao2  = GetNode <MaoView>("MaoJogador2");
                    mao2.ID   = ordem[0];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    ordemJogada.Add(mao);
                    jogadorPosicao = 1;
                }
            }
            else
            {
                if (ordem[0] == ID)
                {
                    ordemJogada.Add(mao);
                    jogadorPosicao = 0;
                    var mao2       = GetNode <MaoView>("MaoJogador1");
                    mao2.ID        = ordem[1];
                    mao2.Jogo      = this;
                    ordemJogada.Add(mao2);
                    mao2      = GetNode <MaoView>("MaoJogador2");
                    mao2.ID   = ordem[2];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    mao2      = GetNode <MaoView>("MaoJogador3");
                    mao2.ID   = ordem[3];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                }
                else if (ordem[1] == ID)
                {
                    var mao2  = GetNode <MaoView>("MaoJogador1");
                    mao2.ID   = ordem[0];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    ordemJogada.Add(mao);
                    jogadorPosicao = 1;
                    mao2           = GetNode <MaoView>("MaoJogador2");
                    mao2.ID        = ordem[2];
                    mao2.Jogo      = this;
                    ordemJogada.Add(mao2);
                    mao2      = GetNode <MaoView>("MaoJogador3");
                    mao2.ID   = ordem[3];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                }
                else if (ordem[2] == ID)
                {
                    var mao2  = GetNode <MaoView>("MaoJogador1");
                    mao2.ID   = ordem[0];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    mao2      = GetNode <MaoView>("MaoJogador2");
                    mao2.ID   = ordem[1];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    ordemJogada.Add(mao);
                    jogadorPosicao = 2;
                    mao2           = GetNode <MaoView>("MaoJogador3");
                    mao2.ID        = ordem[3];
                    mao2.Jogo      = this;
                    ordemJogada.Add(mao2);
                }
                else if (ordem[3] == ID)
                {
                    var mao2  = GetNode <MaoView>("MaoJogador1");
                    mao2.ID   = ordem[0];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    mao2      = GetNode <MaoView>("MaoJogador2");
                    mao2.ID   = ordem[1];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    mao2      = GetNode <MaoView>("MaoJogador3");
                    mao2.ID   = ordem[2];
                    mao2.Jogo = this;
                    ordemJogada.Add(mao2);
                    ordemJogada.Add(mao);
                    jogadorPosicao = 3;
                }
            }
            foreach (var jogador in ordemJogada)
            {
                if (jogador.ID != ID)
                {
                    jogador.addCartas(baralho.comprarCartas(listaDeCartas));
                }
            }
            areaMensagens.mostraMensage("Começar");
            aguardarAnimacaoCompra();
        });

        Client.On("comecar-turno", response =>
        {
            GD.Print(baralho.tamanho());
            ComecoTurno dados = response.GetValue <ComecoTurno>();
            if (dados.jogadorId == jogadorPosicao)
            {
                areaMensagens.mostraMensage("Seu Turno");
                TurnoDoJogador = true;
            }
            if (dados.cartas.Length > 0)
            {
                List <Carta> listaDeCartas = new List <Carta>();
                foreach (var carta in dados.cartas)
                {
                    listaDeCartas.Add(new Carta()
                    {
                        Cor   = (COR)carta._cor,
                        Valor = (VALOR)carta._valor
                    });
                }
                ordemJogada[dados.jogadorId].addCartas(baralho.comprarCartas(listaDeCartas));
            }

            aguardarAnimacaoCompra();
        });

        Client.On("comecar-jogada", async response =>
        {
            var carta = descarte.ultimaCarta();
            int turno = response.GetValue <int>();
            if (carta == null)
            {
                PodeJogar = true;
            }
            else if (turno == jogadorPosicao)
            {
                if (ordemJogada[jogadorPosicao].podeJogar(carta))
                {
                    PodeJogar = true;
                }
                else
                {
                    areaMensagens.mostraMensage("Sem Cartas para jogar");
                    PodeJogar = false;
                    await Task.Delay(500);
                    Jogada jogada = new Jogada();
                    jogada.carta  = null;

                    jogada.sala      = NumeroSala;
                    jogada.jogadorId = jogadorPosicao;
                    await Client.EmitAsync("jogada", ack =>
                    {
                        terminouAnimacaoJogada();
                    }, jogada);
                }
            }
        });

        Client.On("jogada", async response =>
        {
            var jogada  = response.GetValue <Jogada>();
            Carta carta = new Carta();
            carta.Cor   = (COR)jogada.carta._cor;
            carta.Valor = (VALOR)jogada.carta._valor;
            if (carta.Valor == VALOR.SEM_VALOR)
            {
                GD.Print("O Computador vai escolher a cor da carta");
                await Task.Delay(100);
                await Client.EmitAsync("terminar-aguardar", NumeroSala);
            }
            else

            {
                ordemJogada[jogada.jogadorId].removeCarta(carta);
                aguardarAnimacaoCompra();
            }

            //aguardarAnimacaoCompra();
        });

        Client.On("escolhe-cor", response =>
        {
            var jogada = response.GetValue <Jogada>();
            project.src.models.Carta carta = new project.src.models.Carta();
            carta.Cor   = (COR)jogada.carta._cor;
            carta.Valor = (VALOR)jogada.carta._valor;
            carta.setCor((COR)jogada.carta._cor);

            descarte.ultimaCartaView().Carta = carta;
            descarte.ultimaCartaView().Carta = carta;

            aguardarAnimacaoCompra();
        });

        Client.On("mover-descarte-baralho", response =>
        {
            GD.Print("Recebeu a notificação de mover-descarte-baralho");
            descarte.moverCartasBaralho();
        });

        Client.On("fim-jogo", async response =>
        {
            var vitorioso = response.GetValue <int>();
            bool ganhou;

            GD.Print("Chegou o valor " + vitorioso);
            GD.Print("Minha posicao: " + jogadorPosicao);
            if (vitorioso == jogadorPosicao)
            {
                ganhou = true;
            }
            else
            {
                ganhou = false;
            }

            var resp = await notifica.exibeMensagem(ganhou);

            if (resp)
            {
                await Client.DisconnectAsync();
                voltarMenuInicial();
            }
        });
    }