public ReciclaUAGenNHibernate.EN.ReciclaUA.JuegoEN SiguienteItem(int p_oid, ReciclaUAGenNHibernate.Enumerated.ReciclaUA.TipoContenedorEnum p_tipocontenedor)
        {
            /*PROTECTED REGION ID(ReciclaUAGenNHibernate.CP.ReciclaUA_Juego_siguienteItem) ENABLED START*/

            IJuegoCAD juegoCAD = null;
            JuegoCEN  juegoCEN = null;
            JuegoEN   juegoEN  = null;

            INivelCAD nivelCAD = null;
            NivelCEN  nivelCEN = null;
            NivelEN   nivelEN  = null;


            try
            {
                SessionInitializeTransaction();

                juegoCAD = new JuegoCAD(session);
                juegoCEN = new JuegoCEN(juegoCAD);
                juegoEN  = juegoCAD.BuscarPorId(p_oid);

                nivelCAD = new NivelCAD(session);
                nivelCEN = new NivelCEN(nivelCAD);
                IList <NivelEN> niveles = new List <NivelEN>();

                ItemCAD Itemcad = new ItemCAD(session);


                niveles = nivelCAD.BuscarTodos(0, -1);
                nivelEN = niveles [juegoEN.NivelActual - 1];

                IList <ItemEN> itemsen = Itemcad.BuscarItemsPorNivel(nivelEN.Id);


                if (itemsen [juegoEN.ItemActual].Material.Contenedor == p_tipocontenedor)
                {
                    //Acierto
                    juegoEN.Aciertos++;
                    //Decimal penalizacion = 1 / juegoEN.IntentosItemActual;
                    Decimal penalizacion = Decimal.Divide(1, juegoEN.IntentosItemActual);

                    juegoEN.Puntuacion += Decimal.ToDouble(Decimal.Multiply(Convert.ToDecimal(nivelEN.Puntuacion), penalizacion));

                    juegoEN.IntentosItemActual = 1;


                    if (juegoEN.ItemActual + 1 < itemsen.Count)
                    {
                        juegoEN.ItemActual++;
                    }
                    else
                    {
                        juegoEN.ItemActual = 0;
                        niveles            = nivelCAD.BuscarTodos(0, -1);

                        if (juegoEN.NivelActual < niveles.Count)
                        {
                            juegoEN.NivelActual++;
                        }
                        else
                        {
                            juegoEN.Finalizado = true;
                        }
                    }
                }
                else
                {
                    //Fallo
                    juegoEN.Fallos++;
                    juegoEN.IntentosItemActual++;
                }

                juegoCAD.Modificar(juegoEN);



                SessionCommit();
            }
            catch (Exception ex)
            {
                SessionRollBack();
                throw ex;
            }
            finally
            {
                SessionClose();
            }
            return(juegoEN);


            /*PROTECTED REGION END*/
        }
Exemplo n.º 2
0
        public void SiguienteItem(int p_oid, ReciclaUAGenNHibernate.Enumerated.ReciclaUA.TipoContenedorEnum p_tipocontenedor)
        {
            /*PROTECTED REGION ID(ReciclaUAGenNHibernate.CEN.ReciclaUA_Juego_siguienteItem) ENABLED START*/


            JuegoCAD Juegocad = new JuegoCAD();
            JuegoEN  juegoen  = Juegocad.BuscarPorId(p_oid);

            ItemCAD Itemcad = new ItemCAD();

            IList <ItemEN> itemsen = Itemcad.BuscarItemsPorNivel(juegoen.NivelActual.Id);

            if (itemsen [juegoen.ItemActual].Material.Contenedor == p_tipocontenedor)
            {
                //Acierto
                juegoen.Aciertos++;
                double penalizacion = 1 / juegoen.IntentosItemActual;

                /*
                 * if (juegoen.IntentosItemActual == 1) {
                 *      penalizacion = 1;
                 * }
                 * else if (juegoen.IntentosItemActual == 2) {
                 *      penalizacion = 0.75;
                 * }
                 * else if (juegoen.IntentosItemActual == 3) {
                 *      penalizacion = 0.5;
                 * }
                 * else{
                 *      penalizacion = 0.25;
                 * }
                 */
                juegoen.Puntuacion += Convert.ToInt32(juegoen.NivelActual.Puntuacion * penalizacion);

                juegoen.IntentosItemActual = 1;


                if (juegoen.ItemActual < itemsen.Count)
                {
                    juegoen.ItemActual++;
                }
                else
                {
                    juegoen.ItemActual = 0;
                }

                //Obtener siguente nivel

                //juegoen.NivelActual++;

                //Si No existe siguiente nivel

                //juegoen.Finalizado = true;
            }
            else
            {
                //Fallo
                juegoen.Fallos++;
                juegoen.IntentosItemActual++;
            }

            Juegocad.Modificar(juegoen);

            /*PROTECTED REGION END*/
        }