예제 #1
0
        public ActionResult Resetar()
        {
            string mensagem = "";

            try{
                using (TransactionScope scope = new TransactionScope()){
                    db.Database.ExecuteSqlCommand("Delete from Jogo");
                    db.Database.ExecuteSqlCommand("Delete from Rancking");
                    db.Database.ExecuteSqlCommand("Delete from Rodada where isRodadaCarga=0");
                    db.Database.ExecuteSqlCommand("update UserProfile set situacao='ativo' where situacao='suspenso'");
                    Rancking           ranking   = null;
                    List <Rodada>      rodadas   = db.Rodada.ToList();
                    List <UserProfile> jogadores = db.UserProfiles.ToList();
                    foreach (var rodada in rodadas)
                    {
                        foreach (var jogador in jogadores)
                        {
                            ranking                = new Rancking();
                            ranking.rodada_id      = rodada.Id;
                            ranking.pontuacao      = 5.0;
                            ranking.posicao        = 0;
                            ranking.totalAcumulado = 50;
                            ranking.userProfile_id = jogador.UserId;
                            db.Rancking.Add(ranking);
                        }
                    }
                    db.SaveChanges();
                    scope.Complete();
                    mensagem = "ok";
                }
            }catch (Exception ex) {
                mensagem = ex.Message;
            }
            return(RedirectToAction("Edit", "Configuracao", new{ id = 1, msg = mensagem }));
        }
예제 #2
0
        public void gravarPontuacaoNaRodada(int idRodada, UserProfile jogador, double pontosConquistados, bool isReprocessamento = false)
        {
            if (jogador.situacao.Equals("curinga") || jogador.situacao.Equals("pendente"))
            {
                return;
            }
            Rancking ran            = null;
            double   pontuacaoTotal = db.Rancking.Where(r => r.rodada.isAberta == false && r.userProfile_id == jogador.UserId && r.rodada_id < idRodada).OrderByDescending(r => r.Id).Take(9).Sum(r => r.pontuacao);

            if (isReprocessamento)
            {
                ran           = db.Rancking.Where(r => r.rodada_id == idRodada && r.userProfile_id == jogador.UserId).Single();
                ran.pontuacao = Math.Round(pontosConquistados, 2);
                //ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
                db.SaveChanges();
            }
            else
            {
                ran                = new Rancking();
                ran.rodada_id      = idRodada;
                ran.pontuacao      = Math.Round(pontosConquistados, 2);
                ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
                ran.posicao        = 0;
                ran.userProfile_id = jogador.UserId;
                ran.classeId       = jogador.classeId;
                db.Rancking.Add(ran);
                db.SaveChanges();
            }
        }
예제 #3
0
        public float calcularPontosDesafiante(Jogo jogo)
        {
            float pontuacao = 0;

            // se a quantidade de games jogados for igual a zero, quer dizer que não houve jogo e o jogador ficará com zero de pontuação nesta rodada
            if (jogo.gamesJogados != 0 && !jogo.desafiante.situacao.Equals("curinga"))
            {
                int   bonus      = 1;
                float desempenho = calcularDesempenho(jogo.qtddSetsGanhosDesafiante, jogo.gamesGanhosDesafiante, jogo.setsJogados, jogo.gamesJogados);
                if (jogo.idDoVencedor == jogo.desafiante_id)
                {
                    bonus = 6;
                }
                Rancking ranking = db.Rancking.Where(r => r.userProfile_id == jogo.desafiado_id && r.rodada.isAberta == false && r.rodada_id < jogo.rodada_id).OrderByDescending(ran => ran.rodada_id).Take(1).Single();
                if (ranking.posicao == 0)
                {
                    ranking.posicao = 32; // jogador sem ranking ficara na posicao 32 para efeitos de calculos
                }
                pontuacao = (desempenho / (ranking.posicao + 4)) + bonus;
                pontuacao = bonificacaoPorDiferencaPlacar(jogo, "desafiante", pontuacao);
                if ((jogo.idDoVencedor == jogo.desafiante_id) && (jogo.situacao_Id == 5))
                { // WO
                    pontuacao = (pontuacao * 70) / 100;
                }
                if ((jogo.idDoVencedor != jogo.desafiante_id) && (jogo.situacao_Id == 5))
                { // WO
                    pontuacao = 0;
                }
                pontuacao = (float)Math.Round(pontuacao, 2);
            }
            return(pontuacao);
        }
예제 #4
0
 private void gerarRankingInicial(UserProfile model, string perfil)
 {
     if (((perfil.Equals("admin")) || (perfil.Equals("organizador"))) && (!model.isRanckingGerado))
     {
         List <Rodada> rodadas = db.Rodada.Where(r => r.isAberta == false && r.barragemId == model.barragemId).OrderByDescending(r => r.Id).Take(10).ToList();
         Rancking      ranking = null;
         Rodada        rodada  = null;
         if (rodadas.Count() != 0)
         {
             rodada = rodadas[0];
         }
         int    totalAcumulado = getPontuacaoPorClasse(rodada, model.classeId);
         double pontuacao      = (double)totalAcumulado / 10;
         foreach (var item in rodadas)
         {
             int existe = db.Rancking.Where(r => r.rodada_id == item.Id && r.userProfile_id == model.UserId).Count();
             if (existe == 0)
             {
                 ranking                = new Rancking();
                 ranking.rodada_id      = item.Id;
                 ranking.pontuacao      = pontuacao;
                 ranking.posicao        = 0;
                 ranking.totalAcumulado = totalAcumulado;
                 ranking.userProfile_id = model.UserId;
                 ranking.classeId       = model.classeId;
                 db.Rancking.Add(ranking);
                 db.SaveChanges();
             }
         }
         model.isRanckingGerado = true;
         db.Entry(model).State  = EntityState.Modified;
         db.SaveChanges();
     }
 }
예제 #5
0
        public ActionResult EditPontuacao(Rancking r)
        {
            double pontuacaoTotal = db.Rancking.Where(ran => ran.rodada.isAberta == false && ran.userProfile_id == r.userProfile_id &&
                                                      ran.rodada_id < r.rodada_id).OrderByDescending(ran => ran.Id).Take(9).Sum(ran => ran.pontuacao);

            r.totalAcumulado  = r.pontuacao + pontuacaoTotal;
            db.Entry(r).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Detalhes", new { userId = r.userProfile_id }));
        }
예제 #6
0
 void mostrar_rancking()
 {
     foreach (Transform child in puntos_Padre)
     {
         Destroy(child.gameObject);
     }
     for (int i = 0; i < rancking.Count; i++)
     {
         GameObject temporal_puntos_prefab = Instantiate(puntos_Prefab) as GameObject;
         temporal_puntos_prefab.transform.localScale = new Vector3(1, 1, 1);
         temporal_puntos_prefab.transform.SetParent(puntos_Padre, false);
         Rancking temporal_rancking = rancking[i];
         temporal_puntos_prefab.GetComponent <rancking_Script>().poner_Datos("#" + (i + 1).ToString(), temporal_rancking.NombreCuenta, temporal_rancking.Puntaje.ToString());
     }
 }
예제 #7
0
        public ActionResult EditPontuacao(int Id)
        {
            Rancking r = db.Rancking.Find(Id);

            return(View(r));
        }
예제 #8
0
 public void gravarPontuacaoNaRodada(int idRodada, UserProfile jogador, double pontosConquistados, bool isReprocessamento = false)
 {
     try
     {
         if (jogador.situacao.Equals("curinga") || jogador.situacao.Equals("pendente"))
         {
             return;
         }
         Rancking ran            = null;
         double   pontuacaoTotal = 0;
         try
         {
             int    quantidadeDeRodadasParaPontuacao = 9;
             Rodada rodadaAtual = db.Rodada.Where(r => r.Id == idRodada).Single();
             if (rodadaAtual.temporada.iniciarZerada)
             {
                 int quantidadeDeRodadasRealizadas = db.Rodada.Where(r => r.temporadaId == rodadaAtual.temporadaId && r.Id != idRodada).Count();
                 if (quantidadeDeRodadasRealizadas < quantidadeDeRodadasParaPontuacao)
                 {
                     quantidadeDeRodadasParaPontuacao = quantidadeDeRodadasRealizadas;
                 }
             }
             if (quantidadeDeRodadasParaPontuacao > 0)
             {
                 pontuacaoTotal = db.Rancking.Where(r => r.rodada.isAberta == false && r.userProfile_id == jogador.UserId && r.rodada_id < idRodada).
                                  OrderByDescending(r => r.rodada_id).Take(quantidadeDeRodadasParaPontuacao).Sum(r => r.pontuacao);
             }
         }
         catch (Exception e)
         {
             return;
         }
         if (isReprocessamento)
         {
             ran           = db.Rancking.Where(r => r.rodada_id == idRodada && r.userProfile_id == jogador.UserId).Single();
             ran.pontuacao = Math.Round(pontosConquistados, 2);
             //ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
             db.SaveChanges();
         }
         else
         {
             var naoExisteRanking = db.Rancking.Where(r => r.rodada_id == idRodada && r.userProfile_id == jogador.UserId).Count();
             if (naoExisteRanking == 0)
             {
                 ran                = new Rancking();
                 ran.rodada_id      = idRodada;
                 ran.pontuacao      = Math.Round(pontosConquistados, 2);
                 ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
                 ran.posicao        = 0;
                 ran.userProfile_id = jogador.UserId;
                 ran.classeId       = jogador.classeId;
                 db.Rancking.Add(ran);
                 db.SaveChanges();
             }
         }
     }
     catch (Exception e)
     {
         System.ArgumentException argEx = new System.ArgumentException("Jogador:" + jogador.UserId, "Jogador:" + jogador.UserId, e);
         throw argEx;
     }
 }