Пример #1
0
        public void custom_algorithm(Personalizacion personalizacion, List <Producto> products, Usuario user, string tiendaID)
        {
            Assembly          ddl = Assembly.Load(personalizacion.algoritmo);
            var               t   = ddl.GetType("Chebay.AlgorithmDLL.ChebayAlgorithm");
            dynamic           c   = Activator.CreateInstance(t);
            DataRecomendacion dr  = new DataRecomendacion {
                UsuarioID = user.UsuarioID
            };
            Thread timeThread = new Thread(() =>
            {
                try
                {
                    dr.productos     = (List <DataProducto>)c.getProducts(products, user);
                    IDALUsuario udal = new DALUsuarioEF();
                    udal.AgregarRecomendacionesUsuario(tiendaID, dr);
                }
                catch (Exception e)
                {
                    //si falla entonces default
                    default_recomendation_algorithm(products, user, tiendaID);
                }
            });

            timeThread.Start();

            bool finished = timeThread.Join(5000);

            if (!finished)
            {
                Debug.WriteLine("ALGORITMO PERSONALIZADO SUSPENDIDO... EXCESO TIEMPO");
                timeThread.Abort();
                default_recomendation_algorithm(products, user, tiendaID);
            }
        }
Пример #2
0
 //--PERSONALIZACIÓN DE LA TIENDA--
 public void PersonalizarTienda(Personalizacion pr, string idTienda)
 {
     try
     {
         chequearTienda(idTienda);
         using (var context = ChebayDBPublic.CreatePublic())
         {
             var qPers = from per in context.personalizaciones
                         where per.PersonalizacionID == idTienda
                         select per;
             if (qPers.Count() == 0) //Si no existe personalización.
             {
                 context.personalizaciones.Add(pr);
                 context.SaveChanges();
             }
             else //Si existe y hay que actualizarla.
             {
                 Personalizacion p = qPers.FirstOrDefault();
                 p.datos           = pr.datos;
                 p.template        = pr.template;
                 p.backgroud_image = pr.backgroud_image;
                 p.css             = pr.css;
                 context.SaveChanges();
             }
         }
     }
     catch (Exception e)
     {
         Debug.WriteLine(e.Message);
         throw e;
     }
 }
Пример #3
0
        public void cargarPersonalizacion(string url)
        {
            try {
                //Personalizacion
                IDALTienda it = new DALTiendaEF();

                String fileName = "_ViewStart.cshtml";
                var    filePath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/Views"), fileName);

                Personalizacion p      = it.ObtenerPersonalizacionTienda(url);
                String          layout = "@{Layout = \"~/Views/Shared/_Layout.cshtml\";}";
                if (p.template != null && p.template == 1)
                {
                    layout = "@{Layout = \"~/Views/Shared/_Layout.cshtml\";}";
                    String cssFileName = "orangeStyle.css";
                    var    cssFilePath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/Content/personalizacion/EstiloUno"), cssFileName);
                    if (p.css != null)
                    {
                        //Escribir css
                        System.IO.File.WriteAllText(cssFilePath, p.css);
                    }
                    else
                    {
                        var    orangePath  = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/Content/personalizacion/EstiloUno"), "orangeStyle_backup.css");
                        String orangeStyle = System.IO.File.ReadAllText(orangePath);
                        System.IO.File.WriteAllText(cssFilePath, orangeStyle);
                    }
                }
                else if (p.template != null && p.template == 2)
                {
                    layout = "@{Layout = \"~/Views/Shared/_Layout2.cshtml\";}";

                    String cssFile       = "fixes.css";
                    String cssFileBackup = "fixes_backup.css";
                    var    cssPathBackup = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/Content/personalizacion/EstiloDos"), cssFileBackup);
                    //Original css
                    String cssText = System.IO.File.ReadAllText(cssPathBackup);
                    var    imgUrl  = "";
                    if (p.backgroud_image != null)
                    {
                        imgUrl = Request.Url.Scheme + "://" + Request.Url.Authority + "/" + url + "/Product/getTiendaImg";
                    }
                    else
                    {
                        //Por default
                        imgUrl = "images/bg01.png";
                    }
                    cssText = cssText.Replace("body {}", "body {background-image: url(" + imgUrl + ")}");
                    //Escribimos el css editado
                    var cssPath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/Content/personalizacion/EstiloDos"), cssFile);
                    System.IO.File.WriteAllText(cssPath, cssText);
                }
                Session["Tienda_Desc"] = p.tienda.descripcion;
                //Escribimos el layout a usar que carga todos los css para esa pers.
                System.IO.File.WriteAllText(filePath, layout);
            }
            catch (Exception ex) {
            }
        }
Пример #4
0
        public ActionResult SubirAlgoritmoRecomendacion()
        {
            try
            {
                string idAdmin = User.Identity.GetUserName();
                List <AtributoSesion> atributos = idalTienda.ObtenerAtributosSesion(idAdmin);
                AtributoSesion        tienda    = null;
                foreach (AtributoSesion a in atributos)
                {
                    if (a.AtributoSesionID.Equals("tienda"))
                    {
                        tienda = a;
                        break;
                    }
                }
                foreach (string file in Request.Files)
                {
                    var fileContent = Request.Files[file];
                    if (fileContent != null && fileContent.ContentLength > 0)
                    {
                        // get a stream
                        var stream = fileContent.InputStream;
                        // and optionally write the file to disk
                        Debug.WriteLine("El nombre del archivo subido es : " + fileContent.FileName);
                        Personalizacion p = idalTienda.ObtenerPersonalizacionTienda(tienda.Datos);
                        byte[]          buf;
                        buf = new byte[stream.Length];  //declare arraysize
                        stream.Read(buf, 0, buf.Length);
                        p.algoritmo = buf;
                        idalTienda.ActualizarAlgoritmoPersonalizacion(p);
                        //var fileName = Path.GetFileName(file);
                        //var path = Path.Combine(Server.MapPath("~/App_Data/Images"), fileName);
                        //using (var fileStream = File.Create(path))
                        //{
                        //  stream.CopyTo(fileStream);
                        //}
                    }
                }
            }
            catch (Exception)
            {
                return(Json(new
                {
                    Success = false
                }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new
            {
                Success = true
            }, JsonRequestBehavior.AllowGet));
        }
Пример #5
0
        //--TIENDAS--
        public void AgregarTienda(Tienda tienda, string idAdmin)
        {
            try
            {
                if (tienda == null)
                {
                    throw new Exception("Debe pasar una tienda.");
                }
                using (var context = ChebayDBPublic.CreatePublic())
                {
                    var qAdmin = from ad in context.administradores
                                 where ad.AdministradorID == idAdmin
                                 select ad;
                    if (tienda.administradores == null)
                    {
                        tienda.administradores = new HashSet <Administrador>();
                    }
                    tienda.administradores.Add(qAdmin.FirstOrDefault());
                    Personalizacion p = new Personalizacion
                    {
                        PersonalizacionID = tienda.TiendaID,
                        template          = 1,
                        algoritmo         = null
                    };
                    context.personalizaciones.Add(p);
                    context.tiendas.Add(tienda);
                    context.SaveChanges();

                    Debug.WriteLine("Creando schema...");
                    ChebayDBContext.ProvisionTenant(tienda.TiendaID);
                    Debug.WriteLine("Tienda " + tienda.TiendaID + " creada con éxito.");

                    //Crea la Categoria Raiz.
                    var schema = ChebayDBContext.CreateTenant(tienda.TiendaID);
                    CategoriaCompuesta raiz = new CategoriaCompuesta();
                    raiz.Nombre = "/";
                    raiz.hijas  = new List <Categoria>();
                    schema.categorias.Add(raiz);
                    schema.SaveChanges();
                    Debug.WriteLine("Categoría raíz de " + tienda.TiendaID + " creada con éxito.");
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                throw e;
                //Dropear las tablas creadas.
            }
        }
Пример #6
0
    //Cambia el atributo "comprado" del item correspondiente en la lista y lo guarda en el archivo JSON
    public void AdquirirItemPersonalizable(GameObject prefab)
    {
        CargaDeFichero();

        Button botonComprar = prefab.transform.Find("btnComprar").GetComponent <Button>();
        Button botonAplicar = prefab.transform.Find("btnAplicar").GetComponent <Button>();

        GameObject fondoPrecio    = prefab.transform.Find("FondoPrecio").gameObject;
        int        precio         = int.Parse(fondoPrecio.transform.Find("InputPrecio").GetComponent <TMP_Text>().text);
        GameObject fondoItem      = prefab.transform.Find("FondoItem").gameObject;
        Image      imagenArticulo = fondoItem.transform.Find("Item").GetComponent <Image>();

        TMP_Text aplicar = prefab.transform.Find("Aplicar").GetComponent <TMP_Text>();

        Personalizacion articuloPersonalizable = new Personalizacion();

        articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.imagen == imagenArticulo.sprite.name);
        //Se comprueba que existe para que no haya NullReferenceException
        if (articuloPersonalizable != null && !articuloPersonalizable.Equals(null))
        {
            articuloPersonalizable.comprado = true;
            botonComprar.interactable       = false;
            botonComprar.gameObject.SetActive(false);
            fondoPrecio.gameObject.SetActive(false);
            botonAplicar.interactable = true;
            botonAplicar.gameObject.SetActive(true);
            aplicar.gameObject.SetActive(true);
            aplicar.text  = "Aplicar";
            aplicar.color = Color.white;

            GameObject managerCanvas = gameObject.transform.parent.
                                       gameObject.transform.parent.
                                       gameObject.transform.parent.
                                       gameObject.transform.parent.
                                       gameObject.transform.parent.
                                       gameObject.transform.Find("MANAGER CANVAS").gameObject;

            subir = managerCanvas.GetComponent <SubirNivelyMonedas>();

            subir.subirMonedas(-precio);

            gestionTienda = managerCanvas.GetComponent <GestionTienda>();
            //gestionTienda.comprobarDisponibilidadPersonalizacion(prefab.transform.parent.gameObject);

            EscribirEnFichero();
        }
    }
Пример #7
0
 public void ActualizarAlgoritmoPersonalizacion(Personalizacion pers)
 {
     try
     {
         chequearTienda(pers.PersonalizacionID);
         using (var context = ChebayDBPublic.CreatePublic())
         {
             Personalizacion p = context.personalizaciones.Find(pers.PersonalizacionID);
             p.algoritmo = pers.algoritmo;
             context.SaveChanges();
         }
     }
     catch (Exception e)
     {
         Debug.WriteLine(e.Message);
         throw e;
     }
 }
Пример #8
0
        // To convert the Byte Array to the author Image
        public FileContentResult getTiendaImg()
        {
            String          tienda = Session["Tienda_Nombre"].ToString();
            Personalizacion p      = cT.ObtenerPersonalizacionTienda(tienda);

            if (p != null && p.template == 2 && p.backgroud_image != null)
            {
                byte[] byteArray = p.backgroud_image;
                return(byteArray != null
                ? new FileContentResult(byteArray, "image/jpeg")
                : null);
            }
            else
            {
                var dir  = Server.MapPath("~/Content/personalizacion/EstiloDos/images");
                var path = Path.Combine(dir, "bg01.png");
                return(new FileContentResult(System.IO.File.ReadAllBytes(path), "image/jpeg"));
            }
        }
Пример #9
0
 public void EliminarPersonalizacion(string idTienda)
 {
     try
     {
         chequearTienda(idTienda);
         using (var context = ChebayDBPublic.CreatePublic())
         {
             var qTienda = from tnd in context.personalizaciones
                           where tnd.PersonalizacionID == idTienda
                           select tnd;
             Personalizacion t = qTienda.FirstOrDefault();
             context.personalizaciones.Remove(t);
             context.SaveChanges();
         }
     }
     catch (Exception e)
     {
         Debug.WriteLine(e.Message);
         throw e;
     }
 }
Пример #10
0
        public void Run(string tiendaID)
        {
            IDALUsuario udal = new DALUsuarioEF();
            IDALTienda  tdal = new DALTiendaEF();
            IDALSubasta sdat = new DALSubastaEF();

            Tienda          tienda    = tdal.ObtenerTienda(tiendaID);
            List <Producto> productos = sdat.ObtenerTodosProductos(tienda.TiendaID);
            //obtengo algoritmo
            Personalizacion pers             = tdal.ObtenerPersonalizacionTienda(tienda.TiendaID);
            List <Usuario>  usuarios         = udal.ObtenerTodosUsuariosFull(tienda.TiendaID);
            bool            defaultalgorithm = false;

            if (pers.algoritmo == null || pers.algoritmo.Length == 0)
            {
                defaultalgorithm = true;
            }

            //creo indice
            Task index = udal.InicializarColeccionRecomendaciones(tienda.TiendaID);

            index.Wait();

            foreach (var user in usuarios)
            {
                if (defaultalgorithm)
                {
                    Algorithms def = new Algorithms();
                    def.default_recomendation_algorithm(productos, user, tienda.TiendaID);
                }
                else
                {
                    Algorithms a = new Algorithms();
                    a.custom_algorithm(pers, productos, user, tienda.TiendaID);
                }
            }//IF tienda es de instancia...
        }
Пример #11
0
    //Mete todos los items personalizables posibles en un fichero JSON para operar con ellos
    public void LlenarFicheroItems(GameObject contenedor)
    {
        foreach (Transform child in contenedor.transform)
        {
            //Controlamos que en el contenedorComplementos no se comprueben las cabeceras con texto
            //Con "continue" pasamos a la siguiente iteracion

            if (child.name == "Sombreros" || child.name == "Pajaritas" || child.name == "Calcetines")
            {
                continue;
            }

            CargaDeFichero();
            Button botonComprar = child.transform.Find("btnComprar").GetComponent <Button>();
            Button botonAplicar = child.transform.Find("btnAplicar").GetComponent <Button>();
            int    comprado     = int.Parse(child.transform.Find("COMPRADO").GetComponent <TMP_Text>().text);
            int    aplicado     = int.Parse(child.transform.Find("APLICADO").GetComponent <TMP_Text>().text);
            int    tipo         = int.Parse(child.transform.Find("TIPO").GetComponent <TMP_Text>().text);

            GameObject fondoNombre = child.transform.Find("FondoNombre").gameObject;
            string     inputNombre = fondoNombre.transform.Find("InputNombre").GetComponent <TMP_Text>().text;

            GameObject fondoPropiedad = child.transform.Find("FondoPropiedad").gameObject;
            string     inputPropiedad = fondoPropiedad.transform.Find("InputPropiedad").GetComponent <TMP_Text>().text;

            GameObject fondoPrecio = child.transform.Find("FondoPrecio").gameObject;
            int        inputPrecio = int.Parse(fondoPrecio.transform.Find("InputPrecio").gameObject.GetComponent <TMP_Text>().text);

            GameObject fondoItem      = child.transform.Find("FondoItem").gameObject;
            Image      imagenArticulo = fondoItem.transform.Find("Item").GetComponent <Image>();

            Personalizacion articuloPersonalizable = new Personalizacion();

            //Marca si el fichero está recien creado, es decir, si la aplicación no se ha iniciado anteriormente
            //Se añaden todos los objetos personalizados al fichero JSON

            switch (tipo)
            {
            case 1:
                articuloPersonalizable.tipo = 1;
                break;

            case 2:
                articuloPersonalizable.tipo = 2;
                break;

            case 3:
                articuloPersonalizable.tipo = 3;
                break;

            case 4:
                articuloPersonalizable.tipo = 4;
                break;
            }
            articuloPersonalizable.nombre      = inputNombre;
            articuloPersonalizable.descripcion = inputPropiedad;
            articuloPersonalizable.precio      = inputPrecio;
            articuloPersonalizable.imagen      = imagenArticulo.sprite.name;

            if (comprado == 0)
            {
                articuloPersonalizable.comprado = false;
            }
            else
            {
                articuloPersonalizable.comprado = true;
                if (aplicado == 0)
                {
                    articuloPersonalizable.aplicado = false;
                }
                else
                {
                    articuloPersonalizable.aplicado = true;
                }
            }

            listaPersonalizacion.listaPersonalizacion.Add(articuloPersonalizable);

            listaPersonalizacion.listaPersonalizacion.Remove(listaPersonalizacion.listaPersonalizacion
                                                             .Find(x => x.nombre == "Predeterminado" && x.aplicado == false));

            EscribirEnFichero();
        }
    }
Пример #12
0
    //Actualiza los datos en base a la información contenida en el fichero JSON
    public void ExtraerDatosFicheroPersonalizacion(GameObject contenedor)
    {
        CrearFichero();
        CargaDeFichero();

        //Debug.Log("Items en contenedor " + contenedor.transform.childCount);
        //Debug.Log("Items en el fichero " + listaPersonalizacion.listaPersonalizacion.Count());

        foreach (Transform child in contenedor.transform)
        {
            if (child.name == "Sombreros" || child.name == "Pajaritas" || child.name == "Calcetines")
            {
                continue;
            }

            Button   botonComprar    = child.transform.Find("btnComprar").GetComponent <Button>();
            Button   botonAplicar    = child.transform.Find("btnAplicar").GetComponent <Button>();
            Button   botonDesaplicar = child.transform.Find("btnDesaplicar").GetComponent <Button>();
            TMP_Text aplicar         = child.transform.Find("Aplicar").GetComponent <TMP_Text>();
            TMP_Text comprado        = child.transform.Find("COMPRADO").GetComponent <TMP_Text>();
            TMP_Text aplicado        = child.transform.Find("APLICADO").GetComponent <TMP_Text>();
            int      tipo            = int.Parse(child.transform.Find("TIPO").GetComponent <TMP_Text>().text);

            GameObject fondoNombre = child.transform.Find("FondoNombre").gameObject;
            string     inputNombre = fondoNombre.transform.Find("InputNombre").GetComponent <TMP_Text>().text;

            GameObject fondoPropiedad = child.transform.Find("FondoPropiedad").gameObject;
            string     inputPropiedad = fondoPropiedad.transform.Find("InputPropiedad").GetComponent <TMP_Text>().text;

            GameObject fondoPrecio = child.transform.Find("FondoPrecio").gameObject;
            int        inputPrecio = int.Parse(fondoPrecio.transform.Find("InputPrecio").gameObject.GetComponent <TMP_Text>().text);

            GameObject fondoItem      = child.transform.Find("FondoItem").gameObject;
            Image      imagenArticulo = fondoItem.transform.Find("Item").GetComponent <Image>();

            Personalizacion articuloPersonalizable = new Personalizacion();

            //Si el item está comprado se habilitan los botones y textos correspondientes
            articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.imagen == imagenArticulo.sprite.name);

            //Se comprueba que existe para que no haya NullReferenceException
            if (articuloPersonalizable != null && !articuloPersonalizable.Equals(null))
            {
                if (articuloPersonalizable.comprado)
                {
                    comprado.text = 1.ToString();
                    botonComprar.gameObject.SetActive(false);
                    botonAplicar.gameObject.SetActive(true);
                    botonAplicar.interactable = true;
                    fondoPrecio.gameObject.SetActive(false);
                    aplicar.gameObject.SetActive(true);

                    //Si el item en concreto está aplicado actualmente
                    if (articuloPersonalizable.aplicado)
                    {
                        aplicado.text = 1.ToString();
                        botonComprar.gameObject.SetActive(false);
                        botonAplicar.interactable = false;
                        fondoPrecio.gameObject.SetActive(false);
                        aplicar.color = Color.white;
                        aplicar.text  = "Aplicado";

                        if (contenedor.name == "ContenedorComplementos")
                        {
                            botonAplicar.gameObject.SetActive(false);
                            botonDesaplicar.gameObject.SetActive(true);
                            aplicar.text = "Quitar";
                        }
                    }

                    else
                    {
                        aplicado.text = 0.ToString();
                        botonComprar.gameObject.SetActive(false);
                        botonAplicar.gameObject.SetActive(true);
                        botonAplicar.interactable = true;
                        fondoPrecio.gameObject.SetActive(false);
                        aplicar.text  = "Aplicar";
                        aplicar.color = Color.white;
                    }
                }
            }
        }
    }
Пример #13
0
    //Aplica el efecto de usar cada item
    public void AplicarItemPersonalizable(GameObject prefab)
    {
        CargaDeFichero();

        Button     botonAplicar   = prefab.transform.Find("btnAplicar").GetComponent <Button>();
        TMP_Text   aplicar        = prefab.transform.Find("Aplicar").GetComponent <TMP_Text>();
        GameObject fondoItem      = prefab.transform.Find("FondoItem").gameObject;
        Image      imagenArticulo = fondoItem.transform.Find("Item").GetComponent <Image>();
        int        tipo           = int.Parse(prefab.transform.Find("TIPO").GetComponent <TMP_Text>().text);

        GameObject Pared = gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.Find("SueloPared").transform.Find("Pared").gameObject;

        GameObject LINCE = gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.Find("Linces").gameObject;

        Personalizacion articuloPersonalizable = new Personalizacion();

        //SWITCH PARA QUITAR EL OBJETO ANTIGUO (APLICADO = FALSE) y gestionar con el UI, deshabilitando el botón Aplicar.

        switch (tipo)
        {
        case 1:                       //Paredes
            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 1 && x.aplicado == true))
            {
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 1 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;

        case 2:                       //Sombreros

            //Comprueba si hay algún sombrero (tipo 2) que está aplicado ya.
            //Si hay uno, localiza su posición dentro de Lince (Index del hijo) gracias a PlayerPreffs y deshabilita el objeto
            //También deshabilita el botón Aplicar del Prefab y cambia en la listaDeArticulos el atributo "aplicado" del item a false

            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 2 && x.aplicado == true))
            {
                int posicionSombreroAntiguo = PlayerPrefs.GetInt("SombreroAplicado");
                LINCE.transform.GetChild(posicionSombreroAntiguo).gameObject.SetActive(false);
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 2 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;

        case 3:                       //Pajaritas
            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 3 && x.aplicado == true))
            {
                int posicionPajaritaAntigua = PlayerPrefs.GetInt("PajaritaAplicada");
                LINCE.transform.GetChild(posicionPajaritaAntigua).gameObject.SetActive(false);
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 3 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;

        case 4:                       //Calcetines
            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 4 && x.aplicado == true))
            {
                int posicionCalcetinesAntiguos = PlayerPrefs.GetInt("CalcetinesAplicados");
                LINCE.transform.GetChild(posicionCalcetinesAntiguos).gameObject.SetActive(false);
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 4 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;
        }

        //Comprueba qué item es el que está aplicado para poder modificar su estado en el archivo JSON y volver a habilitar el botón

        articuloPersonalizable          = listaPersonalizacion.listaPersonalizacion.Find(x => x.imagen == imagenArticulo.sprite.name);
        articuloPersonalizable.aplicado = true;
        botonAplicar.interactable       = false;
        aplicar.text = "Aplicado";

        //SWITCH PARA APLICAR EL OBJETO ACTUAL y guardar su posición como hijo de Lince

        switch (tipo)
        {
        case 1:                       //Paredes

            //Localiza la posición del objeto aplicado en el array de sprites
            int posicionEnArray = Array.FindIndex(spritesPersonalizacion, x => x.name == articuloPersonalizable.imagen);
            Debug.Log("Posicion en Array " + posicionEnArray);
            Pared.GetComponent <SpriteRenderer>().sprite = imagenArticulo.sprite;
            PlayerPrefs.SetInt("ParedAplicada", posicionEnArray + 1);
            paredCopia = posicionEnArray + 1;
            break;

        case 2:                       //Sombreros
            string     nombreSombrero          = prefab.name;
            GameObject sombrero                = LINCE.transform.Find(nombreSombrero).gameObject;
            int        posicionSombreroEnLince = LINCE.transform.Find(nombreSombrero).GetSiblingIndex(); //Localiza la posición gracias al nombre del prefab y de los hijos de Lince
            sombrero.SetActive(true);
            PlayerPrefs.SetInt("SombreroAplicado", posicionSombreroEnLince);
            sombreroCopia = posicionSombreroEnLince;
            break;

        case 3:                       //Pajaritas
            string     nombrePajarita          = prefab.name;
            GameObject pajarita                = LINCE.transform.Find(nombrePajarita).gameObject;
            int        posicionPajaritaEnLince = LINCE.transform.Find(nombrePajarita).GetSiblingIndex();
            pajarita.SetActive(true);
            PlayerPrefs.SetInt("PajaritaAplicada", posicionPajaritaEnLince);
            pajaritaCopia = posicionPajaritaEnLince;
            break;

        case 4:                       //Calcetines
            string     nombreCalcetines          = prefab.name;
            GameObject calcetines                = LINCE.transform.Find(nombreCalcetines).gameObject;
            int        posicionCalcetinesEnLince = LINCE.transform.Find(nombreCalcetines).GetSiblingIndex();
            calcetines.SetActive(true);
            PlayerPrefs.SetInt("CalcetinesAplicados", posicionCalcetinesEnLince);
            calcetinesCopia = posicionCalcetinesEnLince;
            break;
        }

        EscribirEnFichero();
        ExtraerDatosFicheroPersonalizacion(gameObject.transform.parent.gameObject);
    }
Пример #14
0
    public void QuitarItemPersonalizable(GameObject prefab)
    {
        CargaDeFichero();

        Button     botonAplicar   = prefab.transform.Find("btnAplicar").GetComponent <Button>();
        TMP_Text   aplicar        = prefab.transform.Find("Aplicar").GetComponent <TMP_Text>();
        GameObject fondoItem      = prefab.transform.Find("FondoItem").gameObject;
        Image      imagenArticulo = fondoItem.transform.Find("Item").GetComponent <Image>();
        int        tipo           = int.Parse(prefab.transform.Find("TIPO").GetComponent <TMP_Text>().text);

        GameObject Pared = gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.Find("SueloPared").transform.Find("Pared").gameObject;

        GameObject LINCE = gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.parent.
                           gameObject.transform.Find("Linces").gameObject;

        Personalizacion articuloPersonalizable = new Personalizacion();

        //SWITCH PARA QUITAR EL OBJETO ANTIGUO (APLICADO = FALSE) y gestionar con el UI, deshabilitando el botón Aplicar.

        switch (tipo)
        {
        case 2:                       //Sombreros

            //Comprueba si hay algún sombrero (tipo 2) que está aplicado ya.
            //Si hay uno, localiza su posición dentro de Lince (Index del hijo) gracias a PlayerPreffs y deshabilita el objeto
            //También deshabilita el botón Aplicar del Prefab y cambia en la listaDeArticulos el atributo "aplicado" del item a false

            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 2 && x.aplicado == true))
            {
                int posicionSombreroAntiguo = PlayerPrefs.GetInt("SombreroAplicado");
                LINCE.transform.GetChild(posicionSombreroAntiguo).gameObject.SetActive(false);
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 2 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;

        case 3:                       //Pajaritas
            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 3 && x.aplicado == true))
            {
                int posicionPajaritaAntigua = PlayerPrefs.GetInt("PajaritaAplicada");
                LINCE.transform.GetChild(posicionPajaritaAntigua).gameObject.SetActive(false);
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 3 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;

        case 4:                       //Calcetines
            if (listaPersonalizacion.listaPersonalizacion.Exists(x => x.tipo == 4 && x.aplicado == true))
            {
                int posicionCalcetinesAntiguos = PlayerPrefs.GetInt("CalcetinesAplicados");
                LINCE.transform.GetChild(posicionCalcetinesAntiguos).gameObject.SetActive(false);
                articuloPersonalizable = listaPersonalizacion.listaPersonalizacion.Find(x => x.tipo == 4 && x.aplicado == true);
                Debug.Log("AplicarItem " + articuloPersonalizable);
                articuloPersonalizable.aplicado = false;
                botonAplicar.interactable       = true;
                aplicar.text = "Aplicar";
            }
            break;
        }

        EscribirEnFichero();
        ExtraerDatosFicheroPersonalizacion(gameObject.transform.parent.gameObject);
    }