コード例 #1
0
ファイル: ControlePartidas.cs プロジェクト: gguadanhim/second
        public Boolean criarPartida(DadosUsuario aUsuario1, DadosUsuario aUsuario2)
        {
            Boolean lbRetorno = false;
            DadosPartida lDadosPartida = new DadosPartida();

            lDadosPartida.StatusPartida = DadosPartida.STATUS_PARTIDA_INICIANDO;
            aUsuario2.iiStatus = DadosPartida.STATUS_PARTIDA_AGUARDANDO;

            lDadosPartida.lUsuario1 = aUsuario1;
            lDadosPartida.lUsuario2 = aUsuario2;

            getListaPartidas().Add(lDadosPartida);

            aUsuario1.iDadosPartida = lDadosPartida;
            aUsuario2.iDadosPartida = lDadosPartida;

            if (aUsuario2.getRespostaUsuario() == DadosPartida.STATUS_PARTIDA_ACEITA)
            {
                lbRetorno = true;
                aUsuario1.ibJogadorPrincipal = true;
                aUsuario1.iiStatus = DadosUsuario.STATUS_JOGANDO;
                aUsuario2.iiStatus = DadosUsuario.STATUS_JOGANDO;
                lDadosPartida.iTabuleiro = new DadosTabuleiro();
            }
            else
            {
                getListaPartidas().TryTake(out lDadosPartida);
                aUsuario2.iiStatus = DadosUsuario.STATUS_ONLINE;
            }

            return lbRetorno;
        }
コード例 #2
0
ファイル: DadosPartida.cs プロジェクト: gguadanhim/second
        public DadosRetorno adicionarResultado(DadosUsuario aDadosUsuario, int aiTipo)
        {
            DadosRetorno lDados = new DadosRetorno();
            resultados_usuario lResultado = null;
            int llPontos = 3;
            try
            {
                using (var banco = new modelo_second())
                {
                    var resultadosUsuario = from p in banco.resultados_usuarioSet
                                            where (p.UsuarioSet.Id) == (aDadosUsuario.iiCodigo)
                                        select p;

                    if (resultadosUsuario.Count() > 0)
                    {
                        lResultado = resultadosUsuario.First();
                    }
                    else
                    {
                        lResultado = new resultados_usuario();

                        var dadosUsuario = from p in banco.UsuarioSet
                                           where (p.Id) == (aDadosUsuario.iiCodigo)
                                           select p;

                        lResultado.UsuarioSet = dadosUsuario.First();
                        banco.resultados_usuarioSet.Add(lResultado);
                    }

                    if (aDadosUsuario.ibJogadorPrincipal)
                    {
                        llPontos = 6;
                    }

                    switch (aiTipo)
                    {
                        case VITORIA:
                            lResultado.vitorias++;
                            lResultado.pontos += llPontos;
                            break;
                        case DERROTA:
                            lResultado.derrotas++;
                            break;
                        case DESISTENCIA:
                            lResultado.desistencias++;
                            break;
                    }

                    banco.SaveChanges();
                    lDados.liCodigo = 1;
                }
            }
            catch (Exception ex)
            {
                lDados.lsMensagem = ex.Message;
                System.Console.WriteLine(ex.Message);
            }

            return lDados;
        }
コード例 #3
0
ファイル: ControlePartidas.cs プロジェクト: gguadanhim/second
        public int atualizaStatusUsuario(long aiCodigo,int aiStatus)
        {
            int liRetorno = 0;
            DadosUsuario ldados;
            IEnumerable<DadosUsuario> lResult;
            try
            {
                lResult = this.getLista().Where(item => item.iiCodigo == aiCodigo);

                if (lResult.Count() == 0)
                {
                    ldados = new DadosUsuario();
                    ldados.iiCodigo = aiCodigo;
                    this.getLista().Add(ldados);
                }
                else
                {
                    ldados = lResult.First();
                }

                if (ldados.iiStatus != DadosPartida.STATUS_PARTIDA_AGUARDANDO)
                {
                    ldados.iiStatus = aiStatus;
                }
                ldados.alive = DateTime.Now;
                liRetorno = ldados.iiStatus;
            }
            catch (Exception ex)
            {
                liRetorno = -1;
            }
            return liRetorno;
        }
コード例 #4
0
ファイル: Second.asmx.cs プロジェクト: gguadanhim/second
        private void RemovePartida(DadosUsuario aUsuario)
        {
            DadosPartida ll = null;
            ll = aUsuario.iDadosPartida;

            aUsuario.iDadosPartida.lUsuario1.iListaSelecaoJogador.Clear();
            aUsuario.iDadosPartida.lUsuario2.iListaSelecaoJogador.Clear();

            controlePartidas.getListaPartidas().TryTake(out ll);
            controlePartidas.getListaPartidas().TryPeek(out ll);
            aUsuario.iDadosPartida = null;
        }
コード例 #5
0
ファイル: DadosPartida.cs プロジェクト: gguadanhim/second
        public DadosRetorno VerificaResultado(DadosUsuario aDadosUsuarioVitoria, Boolean abVitoriaPorAbandono)
        {
            DadosRetorno lDados = new DadosRetorno();

            if (Monitor.TryEnter(outputLock))
            {
                try
                {
                    DadosUsuario lDadosUsuarioDerrota;

                    this.adicionarResultado(aDadosUsuarioVitoria, VITORIA);

                    if (aDadosUsuarioVitoria.ibJogadorPrincipal)
                    {
                        lDadosUsuarioDerrota = aDadosUsuarioVitoria.iDadosPartida.lUsuario2;
                    }
                    else
                    {
                        lDadosUsuarioDerrota = aDadosUsuarioVitoria.iDadosPartida.lUsuario1;
                    }

                    if (abVitoriaPorAbandono)
                    {
                        this.adicionarResultado(lDadosUsuarioDerrota, DESISTENCIA);
                    }
                    else
                    {
                        this.adicionarResultado(lDadosUsuarioDerrota, DERROTA);
                    }
                }
                finally
                {
                    Monitor.Exit(outputLock);
                }
            }
            return lDados;
        }