Esempio n. 1
0
        public RelJugadorEdificio subirNivel(int id)
        {
            RelJugadorRecursoHandlerEF jrHandler = new RelJugadorRecursoHandlerEF(ctx);

            try
            {
                var r = ctx.RelJugadorEdificio
                        .Where(w => w.id == id)
                        .SingleOrDefault();

                if (r != null)
                {
                    Boolean compro;
                    var     edi = r.getShared();

                    List <Entities.Costo> costos = r.edificio.calCostoXNivel(r.nivelE, 1);
                    compro = jrHandler.restarCompra(r.colonia.id, costos);
                    if (compro == false)
                    {
                        return(null);
                    }

                    DateTime ahora         = DateTime.Now;
                    TimeSpan tConstruccion = TimeSpan.FromSeconds(edi.edificio.tiempoInicial);
                    r.finalizaConstruccion = ahora.Add(tConstruccion);

                    ctx.SaveChangesAsync().Wait();
                }
                return(r.getShared());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void subirCantidadDestacamento(int id, int sube)
        {
            RelJugadorRecursoHandlerEF jrHandler = new RelJugadorRecursoHandlerEF(ctx);
            var relJMHandler = new RelJugadorMapaHandlerEF(ctx);

            try
            {
                var r = ctx.RelJugadorDestacamento
                        .Where(w => w.id == id)
                        .SingleOrDefault();

                if (r != null)
                {
                    var      dest          = r.getShared();
                    DateTime ahora         = DateTime.Now;
                    TimeSpan tConstruccion = TimeSpan.FromMinutes(dest.destacamento.tiempoInicial * sube);
                    r.finalizaConstruccion = ahora.Add(tConstruccion);

                    List <Entities.Costo> costos = r.destacamento.calCostoXNivel(0, sube);
                    jrHandler.restarCompra(r.colonia.id, costos);
                    r.cantidad += sube;
                    ctx.SaveChangesAsync().Wait();

                    relJMHandler.actualizarProduccionCapacidad(r.colonia.id);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public Boolean updateRelJugadorDestacamento(RelJugadorDestacamento rje)
        {
            RelJugadorRecursoHandlerEF jrHandler = new RelJugadorRecursoHandlerEF(ctx);
            var relJMHandler = new RelJugadorMapaHandlerEF(ctx);

            try
            {
                var r = ctx.RelJugadorDestacamento
                        .Where(w => w.id == rje.id)
                        .SingleOrDefault();

                if (r != null)
                {
                    var dest = r.getShared();
                    var cant = rje.cantidad - r.cantidad;
                    if (!rje.getForceUpdate())
                    {
                        List <Entities.Costo> costos = r.destacamento.calCostoXNivel(0, cant);
                        Boolean compro = jrHandler.restarCompra(r.colonia.id, costos);
                        if (compro == false)
                        {
                            return(false);
                        }
                        DateTime ahora         = DateTime.Now;
                        TimeSpan tConstruccion = TimeSpan.FromSeconds(dest.destacamento.tiempoInicial * cant);
                        r.finalizaConstruccion = ahora.Add(tConstruccion);
                    }
                    else
                    {
                        r.cantidad = rje.cantidad;
                    }

                    ctx.SaveChangesAsync().Wait();
                }
                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void actualizarProduccionCapacidad(int idColonia)
        {
            var recHandler   = new RecursosHandlerEF(ctx);
            var relJRHandler = new RelJugadorRecursoHandlerEF(ctx);
            var relJEHandler = new RelJugadorEdificioHandlerEF(ctx);
            var relJDHandler = new RelJugadorDestacamentoHandlerEF(ctx);
            var relJIHandler = new RelJugadorInvestigacionHandlerEF(ctx);

            relJRHandler.calcularRecursosByIdCol(idColonia);

            var recursosColonia = relJRHandler.getRecursosByColonia(idColonia);
            var recursos        = recHandler.getAllRecursos();
            var edificios       = relJEHandler.getEdificiosByColonia(idColonia);
            var destacamentos   = relJDHandler.getDestacamentosByColonia(idColonia);
            var investigaciones = relJIHandler.getInvestigacionesByColonia(idColonia);

            foreach (var rc in recursosColonia)
            {
                var r = recursos.First(w => w.id == rc.recurso.id);
                rc.produccionXTiempo = r.produccionXTiempo;
                rc.capacidad         = r.capacidadInicial;

                foreach (var ed in edificios)
                {
                    if (ed.nivelE > 0)
                    {
                        var produce = ed.edificio.produce.FirstOrDefault(w => w.recurso.id == rc.recurso.id);
                        if (produce != null)
                        {
                            rc.produccionXTiempo += produce.valor;
                        }

                        var capacidad = ed.edificio.capacidad.FirstOrDefault(w => w.recurso.id == rc.recurso.id);
                        if (capacidad != null)
                        {
                            rc.capacidad += capacidad.valor;
                        }
                    }
                }

                foreach (var relJD in destacamentos)
                {
                    if (relJD.cantidad > 0)
                    {
                        var produce = relJD.destacamento.produce.FirstOrDefault(w => w.recurso.id == rc.recurso.id);
                        if (produce != null)
                        {
                            rc.produccionXTiempo += (produce.valor * relJD.cantidad);
                        }
                        var almacena = relJD.destacamento.capacidad.FirstOrDefault(w => w.recurso.id == rc.recurso.id);
                        if (almacena != null)
                        {
                            rc.capacidad += (almacena.valor * relJD.cantidad);
                        }
                    }
                }

                foreach (var relJI in investigaciones)
                {
                    if (relJI.nivel > 0)
                    {
                        var produce = relJI.investigacion.produce.FirstOrDefault(w => w.recurso.id == rc.recurso.id);
                        if (produce != null)
                        {
                            rc.produccionXTiempo = Convert.ToInt32(rc.produccionXTiempo * (produce.incrementoNivel / 100 + 1));
                        }
                        var capacidad = relJI.investigacion.capacidad.FirstOrDefault(w => w.recurso.id == rc.recurso.id);
                        if (capacidad != null)
                        {
                            rc.capacidad = Convert.ToInt32(rc.capacidad * (capacidad.incrementoNivel / 100 + 1));
                        }
                    }
                }

                relJRHandler.updateRelJugadorRecurso(rc);
            }
        }