Esempio n. 1
0
        public Batalha IniciarBatalha(int id)
        {
            var usuario = Utils.Utils.ObterUsuarioLogado(db);

            var batalha = db.Batalhas
                          .Include(b => b.ExercitoPreto)
                          .Include(b => b.ExercitoBranco)
                          .Include(b => b.Tabuleiro)
                          .Include(b => b.Turno)
                          .Include(b => b.Turno.Usuario)
                          .Where(b =>
                                 (b.ExercitoBranco.Usuario.Email == usuario.Email ||
                                  b.ExercitoPreto.Usuario.Email == usuario.Email) &&
                                 (b.ExercitoBranco != null && b.ExercitoPreto != null) &&
                                 b.Id == id).FirstOrDefault();

            if (batalha == null)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.NotFound)
                {
                    Content      = new StringContent(String.Format("Não foi possível carregar a Batalha.")),
                    ReasonPhrase = "Não foi possível carregar a batalha."
                };
                throw new HttpResponseException(resp);
            }

            if (batalha.Tabuleiro == null)
            {
                batalha.Tabuleiro = new Tabuleiro
                {
                    Altura  = 8,
                    Largura = 8
                };
            }


            if (batalha.Estado == Batalha.EstadoBatalhaEnum.NaoIniciado)
            {
                batalha.Tabuleiro.IniciarJogo(batalha.ExercitoBranco, batalha.ExercitoPreto);

                Random r = new Random();
                batalha.Turno = r.Next(100) < 50 ?
                                batalha.ExercitoPreto : batalha.ExercitoBranco;

                batalha.Estado = Batalha.EstadoBatalhaEnum.Iniciado;

                db.SaveChanges();

                var firebaseTabuleiro = new FirebaseTabuleiro(batalha.Tabuleiro, batalha.TurnoId);
                firebase.Add(firebaseTabuleiro, firebaseTabuleiro.Id);
            }


            return(batalha);
        }