//
        // GET: /Game/

        public ActionResult Index()
        {
            UserProfile user = null;

            Tabuleiro tabuleiro = null;

            Skin skin = null;

            Nivel nivel = null;

            using (var db = new UsersContext())
            {
                var id = WebSecurity.GetUserId(User.Identity.Name);

                user = db.UserProfiles.FirstOrDefault(x => x.UserId == id);
            }

            using (var db = new TabuleirosContext())
            {
                tabuleiro = db.Tabuleiros.Where(x => x.UserId == user.UserId).OrderByDescending(x => x.Id).FirstOrDefault();
            }

            using (var db = new SkinsContext())
            {
                skin = db.Skins.FirstOrDefault(x => x.Id == tabuleiro.SkinId);
            }
            using (var db = new NiveisContext())
            {
                nivel = db.Niveis.FirstOrDefault(x => x.Id == tabuleiro.NivelId);
            }


            ViewBag.Skin = JsonConvert.SerializeObject(skin);

            ViewBag.Nivel = nivel;

            ViewBag.Tabuleiro = tabuleiro.Dados;

            ViewBag.IdTab = tabuleiro.Id;

            ViewBag.UserId = user.UserId;

            ViewBag.Pontos = user.Pontos;

            ViewBag.Saldo = user.Saldo;

            return(View());
        }
        public JsonResult Cadastrar(int nivelId, int skinId, string dados)
        {
            try
            {
                UserProfile user = null;

                using (var db = new UsersContext())
                {
                    user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == User.Identity.Name.ToLower());
                }

                using (var db = new TabuleirosContext())
                {
                    if (db.Tabuleiros.Any())
                    {
                        var id = db.Tabuleiros.OrderByDescending(x => x.Id).First().Id;

                        var item = new Tabuleiro(user.UserId, nivelId, skinId, dados)
                        {
                            Id = id + 1
                        };

                        db.Tabuleiros.Add(item);
                    }
                    else
                    {
                        var item = new Tabuleiro(user.UserId, nivelId, skinId, dados)
                        {
                            Id = 1
                        };

                        db.Tabuleiros.Add(item);
                    }

                    db.SaveChanges();
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(null);
        }
Beispiel #3
0
        public override void OnMessage(string message)
        {
            try
            {
                var envio = JsonConvert.DeserializeObject <Envio>(message);
                switch (envio.TipoMensagem)
                {
                case (int)TipoMensagem.Montagem:
                {
                    Barcos = new List <Barco>();

                    var firstOrDefault = envio.Objeto.FirstOrDefault();

                    if (firstOrDefault != null)
                    {
                        var idTab = int.Parse(firstOrDefault.ToString());

                        using (var db = new TabuleirosContext())
                        {
                            var tabuleiro = db.Tabuleiros.FirstOrDefault(x => x.Id == idTab);


                            var itens = JsonConvert.DeserializeObject <List <EnvioBarco> >(tabuleiro.Dados);

                            foreach (var item in itens)
                            {
                                Barcos.Add(new Barco(item));

                                StatusTabuleiro = true;
                            }
                        }
                    }
                    else
                    {
                        Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Fail, "Você Erro !!!!")));
                    }


                    if (clients.All(x => ((MicrosoftWebSockets)x).StatusTabuleiro))
                    {
                        clients.Broadcast(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Inicio, "Jogo Iniciado")));

                        ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!")));
                    }
                    else
                    {
                        this.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Aguarde, "Aguarde o proximo Jogador terminar a Montagem....")));
                    }
                }
                break;


                case (int)TipoMensagem.Jogada:
                {
                    var jogada = envio.Objeto.FirstOrDefault();

                    if (jogada != null)
                    {
                        var opoente = ObterOponente();

                        if (opoente != null)
                        {
                            var barco = opoente.Barcos.FirstOrDefault(x => x.Coordenadas.Any(y => y.Valor == jogada.ToString() && !y.Destruido));

                            if (barco != null)
                            {
                                opoente.Barcos.Remove(barco);

                                barco.Afundar(jogada.ToString());

                                opoente.Barcos.Add(barco);

                                AtualizarBarcos(opoente, jogada.ToString());

                                Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Acerto, "Você acerto !!!!!")));


                                if (barco.Coordenadas.All(x => x.Destruido))
                                {
                                    opoente.Send(
                                        JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Destruido, string.Format("Ops Você perdeu seu barco !!! |{0}", barco.TipoBarco))));
                                }
                            }
                            else
                            {
                                opoente.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Tiro, string.Format("Tiro |{0}", jogada.ToString()))));
                                Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Erro, "Você Erro !!!!")));
                            }
                        }
                    }
                }

                    VerificarFinalJogo();

                    ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!!")));
                    break;

                case (int)TipoMensagem.TempoEsgotado:
                    ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!!")));
                    break;
                }

                var webSocketHandler = clients.SingleOrDefault(r => ((MicrosoftWebSockets)r).name == "Julio");


                if (webSocketHandler != null)
                {
                    webSocketHandler.Send("Rola");
                }
            }
            catch (Exception ex)
            {
                this.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Fail, "Mensagem com Erro")));
            }
        }