Example #1
0
    private void menuCargar()
    {
        Rect caja = new Rect(cuantoW * 14, cuantoH * 7, cuantoW * 20, cuantoH * 16);

        GUI.Box(caja, "");
        caja           = new Rect(cuantoW * 14, cuantoH * 8, cuantoW * 20, cuantoH * 14);
        posicionScroll = GUI.BeginScrollView(caja, posicionScroll, new Rect(0, 0, cuantoW * 20, cuantoH * 4 * numSaves));
        if (numSaves == 0)
        {
            GUI.Label(new Rect(cuantoW, cuantoH * 4, cuantoW * 18, cuantoH * 4), "No hay ninguna partida guardada");
        }
        for (int i = 0; i < numSaves; i++)
        {
            if (GUI.Button(new Rect(cuantoW, i * cuantoH * 4, cuantoW * 18, cuantoH * 4), new GUIContent(nombresSaves[i], "Cargar partida num. " + i)))
            {
                SaveLoad.cambiaFileName(nombresSaves[i]);
                saveGame = SaveLoad.Load();
                GameObject   temp       = GameObject.FindGameObjectWithTag("Carga");
                ValoresCarga contenedor = temp.GetComponent <ValoresCarga>();
                SaveLoad.rehacerScript(saveGame, ref contenedor);
                contenedor.save = saveGame;
                estado          = 7;
            }
        }
        GUI.EndScrollView();
        if (GUI.Button(new Rect(cuantoW * 42, cuantoH * 26, cuantoW * 4, cuantoH * 2), new GUIContent("Volver", "Volver al men\u00fa"), "boton_atras"))                 //Aqui \u00fa es el caracter unicode para "ú"
        {
            estado = 0;
        }
    }
Example #2
0
    private bool hechaCarga = false;                                                                            //Indica si se ha llevado a cabo una carga

    //Update y transiciones de estados -------------------------------------------------------------------------------------------------------

    void Awake()
    {
        Random.seed             = System.DateTime.Now.Millisecond;
        UnityEngine.Random.seed = System.DateTime.Now.Millisecond;
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando el script Principal...");
        //Se busca el objeto con los valores guardados en la escena inicial, si lo hubiera
        contenedor = GameObject.FindGameObjectWithTag("Carga");
        if (contenedor == null)                         //Si el objeto no existe, crear el planeta de cero
        {
            Debug.Log(FuncTablero.formateaTiempo() + ": No encontrado contenedor, iniciando creacion inicial...");
            creacionInicial();
            contenedor     = new GameObject("Contenedor");
            contenedor.tag = "Carga";
            contenedor.AddComponent <ValoresCarga>();
        }
        else                                                            //Si el objeto existe, cargar los valores necesarios
        {
            Debug.Log(FuncTablero.formateaTiempo() + ": Encontrado contenedor, cargando...");
            ValoresCarga cont = contenedor.GetComponent <ValoresCarga>();
            creacionCarga(cont);
            hechaCarga = true;
        }
        Debug.Log(FuncTablero.formateaTiempo() + ": Completada la creacion del planeta.");
        mejoras    = GameObject.FindGameObjectWithTag("Mejoras").GetComponent <MejorasNave>();
        interfaz   = gameObject.GetComponent <InterfazPrincipal>();
        materiales = GameObject.FindGameObjectWithTag("Materiales").GetComponent <Materiales> ();
    }
Example #3
0
 public void rellenaContenedor(ref ValoresCarga contenedor)
 {
     contenedor.texturaBase         = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;
     contenedor.texturaElementos    = objetoRoca.renderer.sharedMaterials[3].mainTexture as Texture2D;
     contenedor.texturaHabitats     = objetoRoca.renderer.sharedMaterials[1].GetTexture("_FiltroTex") as Texture2D;
     contenedor.texturaHabsEstetica = objetoRoca.renderer.sharedMaterials[1].mainTexture as Texture2D;
     contenedor.vida        = vida;
     contenedor.roca        = objetoRoca.GetComponent <MeshFilter>().mesh;
     contenedor.agua        = objetoOceano.GetComponent <MeshFilter>().mesh;
     contenedor.nivelAgua   = FuncTablero.getNivelAgua();
     contenedor.tamanoPlaya = FuncTablero.getTamanoPlaya();
 }
Example #4
0
    public static void Save(string filePath, ValoresCarga contenedor)
    {
        SaveData   save   = generarValores(contenedor);
        FileStream stream = new FileStream(filePath, FileMode.Create);

        try {
            BinaryFormatter bformatter = new BinaryFormatter();
            bformatter.Serialize(stream, save);
        }
        catch (SerializationException e) {
            Debug.LogError("Excepcion al serializar el savegame. Datos: " + e.Message);
        }
        finally {
            stream.Close();
        }
    }
Example #5
0
    private void creacionCarga(ValoresCarga contenedor)
    {
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando el script de carga de valores...");
        Texture2D texBase = contenedor.texturaBase;

        FuncTablero.inicializa(texBase);
        Mesh  rocaMesh    = contenedor.roca;
        Mesh  aguaMesh    = contenedor.agua;
        float nivelAgua   = contenedor.nivelAgua;
        float tamanoPlaya = contenedor.tamanoPlaya;

        //Trabajar con la textura Textura_Planeta y crear el mapa lógico a la vez
        Debug.Log(FuncTablero.formateaTiempo() + ": Aplicando textura de ruido...");
        Texture2D texturaBase = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;

        texturaBase = texBase;
        texturaBase.Apply();
        Debug.Log(FuncTablero.formateaTiempo() + ": Asignando Mesh a la roca...");
        MeshFilter Roca = objetoRoca.GetComponent <MeshFilter>();

        Roca.mesh = rocaMesh;
        //Se añade el collider aqui, para que directamente tenga la mesh adecuada
        Debug.Log(FuncTablero.formateaTiempo() + ": Creando collider de la roca...");
        objetoRoca.AddComponent <MeshCollider>();
        objetoRoca.GetComponent <MeshCollider>().sharedMesh = rocaMesh;
        Debug.Log(FuncTablero.formateaTiempo() + ": Asignando Mesh al oceano...");
        MeshFilter Agua = objetoOceano.GetComponent <MeshFilter>();

        Agua.mesh = aguaMesh;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completando detalles...");
        //se ajusta la propiedad de nivel de agua del shader
        objetoOceano.renderer.sharedMaterial.SetFloat("_nivelMar", nivelAgua);
        objetoOceano.renderer.sharedMaterial.SetFloat("_tamPlaya", tamanoPlaya);

        Debug.Log(FuncTablero.formateaTiempo() + ": Cargando texturas de habitats...");
        //obtener la textura de habitats del array de materiales de roca. Habitats esta en la 1ª posicion.
        objetoRoca.renderer.sharedMaterials[2].mainTexture = contenedor.texturaElementos;
        objetoRoca.renderer.sharedMaterials[1].mainTexture = contenedor.texturaHabsEstetica;
        Texture2D texHabitats = objetoRoca.renderer.sharedMaterials[1].GetTexture("_FiltroTex") as Texture2D;

        texHabitats = contenedor.texturaHabitats;
        objetoRoca.renderer.sharedMaterials[1].SetTexture("_FiltroTex", texHabitats);
        Debug.Log(FuncTablero.formateaTiempo() + ": Cargando la vida...");
        vida = new Vida(contenedor.vida);
        vida.setObjetoRoca(objetoRoca.transform);
        Debug.Log(FuncTablero.formateaTiempo() + ": Carga completada.");
    }
Example #6
0
    public void rellenaContenedor(ref ValoresCarga contenedor)
    {
        contenedor.texturaBase         = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;
        contenedor.texturaElementos    = objetoRoca.renderer.sharedMaterials[2].mainTexture as Texture2D;
        contenedor.texturaHabitats     = objetoRoca.renderer.sharedMaterials[1].GetTexture("_FiltroTex") as Texture2D;
        contenedor.texturaHabsEstetica = objetoRoca.renderer.sharedMaterials[1].mainTexture as Texture2D;
        contenedor.vida        = vida;
        contenedor.roca        = objetoRoca.GetComponent <MeshFilter>().mesh;
        contenedor.agua        = objetoOceano.GetComponent <MeshFilter>().mesh;
        contenedor.nivelAgua   = FuncTablero.getNivelAgua();
        contenedor.tamanoPlaya = FuncTablero.getTamanoPlaya();

        contenedor.energia = energia;
        contenedor.compBas = componentesBasicos;
        contenedor.compAdv = componentesAvanzados;
        contenedor.matBio  = materialBiologico;

        contenedor.mejorasCompradas = mejoras.mejorasCompradas;
        contenedor.etapaJuego       = (int)interfaz.etapaJuego;
    }
Example #7
0
    public void completarCarga()
    {
        if (hechaCarga)
        {
            ValoresCarga temp = contenedor.GetComponent <ValoresCarga>();
            SaveData     save = temp.save;
            SaveLoad.colocarSeresTablero(ref vida, save.vidaData);
            energia              = temp.energia;
            componentesBasicos   = temp.compBas;
            componentesAvanzados = temp.compAdv;
            materialBiologico    = temp.matBio;
            interfaz.etapaJuego  = (InterfazPrincipal.tEtapaJuego)temp.etapaJuego;
            for (int i = 0; i < temp.mejorasCompradas.Length; i++)
            {
                if (temp.mejorasCompradas[i])
                {
                    switch (i)
                    {
                    case 0:
                        mejoras.compraMejora0();
                        break;

                    case 1:
                        mejoras.compraMejora1();
                        break;

                    case 2:
                        mejoras.compraMejora2();
                        break;

                    case 3:
                        mejoras.compraMejora3();
                        break;

                    case 4:
                        mejoras.compraMejora4();
                        break;

                    case 5:
                        mejoras.compraMejora5();
                        break;

                    case 6:
                        mejoras.compraMejora6();
                        break;

                    case 7:
                        mejoras.compraMejora7();
                        break;

                    case 8:
                        mejoras.compraMejora8();
                        break;

                    case 9:
                        mejoras.compraMejora9();
                        break;

                    case 10:
                        mejoras.compraMejora10();
                        break;

                    case 11:
                        mejoras.compraMejora11();
                        break;

                    case 12:
                        mejoras.compraMejora12();
                        break;

                    case 13:
                        mejoras.compraMejora13();
                        break;

                    case 14:
                        mejoras.compraMejora14();
                        break;

                    case 15:
                        mejoras.compraMejora15();
                        break;
                    }
                }
            }
        }
    }
Example #8
0
 //Guardar el archivo con el avance en el juego
 public static void Save(ValoresCarga contenedor)
 {
     //Sobrecargado
     Save(currentFilePath + currentFileName, contenedor);
 }
Example #9
0
    void OnGUI()
    {
        GUI.skin = estiloGUI;
        GUI.Box(new Rect(cuantoW * 16, 0, cuantoW * 16, cuantoH * 8), "", "header_titulo");         //Header es 500x500px
        switch (estado)
        {
        case 0:                         //Menu principal
            menuPrincipal();
            break;

        case 1:                         //Comenzar
            Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando la carga de la siguiente escena...");
            ValoresCarga temp = contenedorTexturas.GetComponent <ValoresCarga>();
            temp.texturaBase = texturaBase;
            temp.texturaBase.Apply();
            temp.roca                = rocaMesh;
            temp.agua                = aguaMesh;
            temp.nivelAgua           = nivelAguaInit;
            temp.tamanoPlaya         = tamanoPlayasInit;
            temp.texturaElementos    = texElems;
            temp.texturaHabitats     = texHabitats;
            temp.texturaHabsEstetica = texHabitatsEstetica;
            temp.vida                = vida;
            temp.energia             = 200;
            temp.compBas             = 50;
            temp.compAdv             = 0;
            temp.matBio              = 0;
            temp.etapaJuego          = 0;
            Debug.Log(FuncTablero.formateaTiempo() + ": Valores cargados correctamente. Iniciando carga de nivel...");
            Application.LoadLevel("Escena_Principal");
            break;

        case 2:                         //Opciones
            menuOpciones();
            if (GUI.changed)
            {
                actualizarOpciones();
            }
            break;

        case 3:                         //Creditos
            creditos();
            break;

        case 4:                         //Salir
            PlayerPrefs.Save();
            Application.Quit();
            break;

        case 5:                         //Creacion
            if (faseCreacion == 0)
            {
                creacionParte1Interfaz();
            }
            else if (faseCreacion == 1)
            {
                creacionParte2Interfaz();
            }
            else if (faseCreacion == 2)
            {
                creacionParte3Interfaz();
            }
            break;

        case 6:                         //Cargar (seleccion)
            menuCargar();
            break;

        case 7:                         //Cargar (el juego seleccionado)
//				cargarJuego();
            Application.LoadLevel("Escena_Principal");
            break;
        }
        if (trabajando)
        {
            barraProgreso();
        }

        //Tooltip
        mostrarTooltip();
    }
Example #10
0
 public static void Save(string filePath, ValoresCarga contenedor)
 {
     SaveData save = generarValores(contenedor);
     FileStream stream = new FileStream(filePath, FileMode.Create);
     try {
         BinaryFormatter bformatter = new BinaryFormatter();
         bformatter.Serialize(stream, save);
     }
     catch (SerializationException e) {
         Debug.LogError("Excepcion al serializar el savegame. Datos: " + e.Message);
     }
     finally {
         stream.Close();
     }
 }
Example #11
0
    /* Genera un archivo SaveData (serializable) a partir de un conjunto de datos
     * representativo del estado del juego pero no serializable.
     */
    private static SaveData generarValores(ValoresCarga contenedor)
    {
        SaveData resultado = new SaveData();

        //Textura Heightmap (Textura_Planeta)
        resultado.heightmapW = contenedor.texturaBase.width;
        resultado.heightmapH = contenedor.texturaBase.height;
        Color[] temp1 = contenedor.texturaBase.GetPixels();
        resultado.heightmapData = new float[temp1.Length];
        for (int i = 0; i < temp1.Length; i++)
        {
            resultado.heightmapData[i] = temp1[i].r;
        }
        //Textura elementos (Textura_Recursos)
        resultado.elementosW = contenedor.texturaElementos.width;
        resultado.elementosH = contenedor.texturaElementos.height;
        Color[] temp2 = contenedor.texturaElementos.GetPixels();
        resultado.elementosData = new float[temp2.Length * 4];
        for (int i = 0; i < temp2.Length; i++)
        {
            resultado.elementosData[i * 4]     = temp2[i].r;
            resultado.elementosData[i * 4 + 1] = temp2[i].g;
            resultado.elementosData[i * 4 + 2] = temp2[i].b;
            resultado.elementosData[i * 4 + 3] = temp2[i].a;
        }
        //Textura habitats (Textura_Habitats)
        resultado.habitatsW = contenedor.texturaHabitats.width;
        resultado.habitatsH = contenedor.texturaHabitats.height;
        Color[] temp4 = contenedor.texturaHabitats.GetPixels();
        resultado.habitatsData = new float[temp4.Length * 4];
        for (int i = 0; i < temp4.Length; i++)
        {
            resultado.habitatsData[i * 4]     = temp4[i].r;
            resultado.habitatsData[i * 4 + 1] = temp4[i].g;
            resultado.habitatsData[i * 4 + 2] = temp4[i].b;
            resultado.habitatsData[i * 4 + 3] = temp4[i].a;
        }
        //Textura habitats estetica (Textura_Habitats_Estetica)
        resultado.esteticaW = contenedor.texturaHabsEstetica.width;
        resultado.esteticaH = contenedor.texturaHabsEstetica.height;
        Color[] temp5 = contenedor.texturaHabsEstetica.GetPixels();
        resultado.esteticaData = new float[temp5.Length * 4];
        for (int i = 0; i < temp5.Length; i++)
        {
            resultado.esteticaData[i * 4]     = temp5[i].r;
            resultado.esteticaData[i * 4 + 1] = temp5[i].g;
            resultado.esteticaData[i * 4 + 2] = temp5[i].b;
            resultado.esteticaData[i * 4 + 3] = temp5[i].a;
        }
        //Clase Vida
        generarVidaSerializable(contenedor.vida, ref resultado.vidaData);
        //Mesh Roca
        Vector3[] temp6 = contenedor.roca.vertices;
        Vector3[] temp7 = contenedor.roca.normals;
        resultado.rocaVertices = new float[temp6.Length * 3];
        resultado.rocaNormals  = new float[temp7.Length * 3];
        for (int i = 0; i < temp6.Length; i++)
        {
            resultado.rocaVertices[i * 3]     = temp6[i].x;
            resultado.rocaVertices[i * 3 + 1] = temp6[i].y;
            resultado.rocaVertices[i * 3 + 2] = temp6[i].z;
            resultado.rocaNormals[i * 3]      = temp7[i].x;
            resultado.rocaNormals[i * 3 + 1]  = temp7[i].y;
            resultado.rocaNormals[i * 3 + 2]  = temp7[i].z;
        }
        Vector2[] temp8 = contenedor.roca.uv;
        resultado.rocaUVs = new float[temp8.Length * 2];
        for (int i = 0; i < temp8.Length; i++)
        {
            resultado.rocaUVs[i * 2]     = temp8[i].x;
            resultado.rocaUVs[i * 2 + 1] = temp8[i].y;
        }
        int[] temp9 = contenedor.roca.triangles;
        resultado.rocaTriangulos = new int[temp9.Length];
        for (int i = 0; i < temp9.Length; i++)
        {
            resultado.rocaTriangulos[i] = temp9[i];
        }
        //Mesh Agua
        Vector3[] temp10 = contenedor.agua.vertices;
        Vector3[] temp11 = contenedor.agua.normals;
        resultado.aguaVertices = new float[temp10.Length * 3];
        resultado.aguaNormals  = new float[temp11.Length * 3];
        for (int i = 0; i < temp10.Length; i++)
        {
            resultado.aguaVertices[i * 3]     = temp10[i].x;
            resultado.aguaVertices[i * 3 + 1] = temp10[i].y;
            resultado.aguaVertices[i * 3 + 2] = temp10[i].z;
            resultado.aguaNormals[i * 3]      = temp11[i].x;
            resultado.aguaNormals[i * 3 + 1]  = temp11[i].y;
            resultado.aguaNormals[i * 3 + 2]  = temp11[i].z;
        }
        Vector2[] temp12 = contenedor.agua.uv;
        resultado.aguaUVs = new float[temp12.Length * 2];
        for (int i = 0; i < temp12.Length; i++)
        {
            resultado.aguaUVs[i * 2]     = temp12[i].x;
            resultado.aguaUVs[i * 2 + 1] = temp12[i].y;
        }
        int[] temp13 = contenedor.agua.triangles;
        resultado.aguaTriangulos = new int[temp13.Length];
        for (int i = 0; i < temp13.Length; i++)
        {
            resultado.aguaTriangulos[i] = temp13[i];
        }
        //Otras variables
        resultado.nivelAgua   = contenedor.nivelAgua;
        resultado.tamanoPlaya = contenedor.tamanoPlaya;

        resultado.energia          = contenedor.energia;
        resultado.compBas          = contenedor.compBas;
        resultado.compAdv          = contenedor.compAdv;
        resultado.matBio           = contenedor.matBio;
        resultado.mejorasCompradas = new bool[contenedor.mejorasCompradas.Length];
        for (int i = 0; i < contenedor.mejorasCompradas.Length; i++)
        {
            resultado.mejorasCompradas[i] = contenedor.mejorasCompradas[i];
        }
        resultado.etapaJuego = contenedor.etapaJuego;
        //Fin
        return(resultado);
    }
Example #12
0
    /*Construye un conjunto de datos representativos del estado del juego a partir de
     * unos datos serializables.
     */
    public static void rehacerScript(SaveData save, ref ValoresCarga contenedor)
    {
        //Textura Heightmap (Textura_Planeta)
        Texture2D temp1 = new Texture2D(save.heightmapW, save.heightmapH);

        Color[] temp1a = new Color[save.heightmapData.Length];
        for (int i = 0; i < save.heightmapData.Length; i++)
        {
            temp1a[i].r = save.heightmapData[i];
            temp1a[i].g = save.heightmapData[i];
            temp1a[i].b = save.heightmapData[i];
        }
        temp1.SetPixels(temp1a);
        temp1.Apply();
        contenedor.texturaBase = temp1;
        //Textura elementos (Textura_Recursos)
        Texture2D temp2 = new Texture2D(save.elementosW, save.elementosH);

        Color[] temp2a = new Color[save.elementosData.Length / 4];
        for (int i = 0; i < temp2a.Length; i++)
        {
            temp2a[i].r = save.elementosData[i * 4];
            temp2a[i].g = save.elementosData[i * 4 + 1];
            temp2a[i].b = save.elementosData[i * 4 + 2];
            temp2a[i].a = save.elementosData[i * 4 + 3];
        }
        temp2.SetPixels(temp2a);
        temp2.Apply();
        contenedor.texturaElementos = temp2;
        //Textura habitats (Textura_Habitats)
        Texture2D temp4 = new Texture2D(save.habitatsW, save.habitatsH);

        Color[] temp4a = new Color[save.habitatsData.Length / 4];
        for (int i = 0; i < temp4a.Length; i++)
        {
            temp4a[i].r = save.habitatsData[i * 4];
            temp4a[i].g = save.habitatsData[i * 4 + 1];
            temp4a[i].b = save.habitatsData[i * 4 + 2];
            temp4a[i].a = save.habitatsData[i * 4 + 3];
        }
        temp4.SetPixels(temp4a);
        temp4.Apply();
        contenedor.texturaHabitats = temp4;
        //Textura habitats estetica (Textura_Habitats_Estetica)
        Texture2D temp5 = new Texture2D(save.esteticaW, save.esteticaH);

        Color[] temp5a = new Color[save.esteticaData.Length / 4];
        for (int i = 0; i < temp5a.Length; i++)
        {
            temp5a[i].r = save.esteticaData[i * 4];
            temp5a[i].g = save.esteticaData[i * 4 + 1];
            temp5a[i].b = save.esteticaData[i * 4 + 2];
            temp5a[i].a = save.esteticaData[i * 4 + 3];
        }
        temp5.SetPixels(temp5a);
        temp5.Apply();
        contenedor.texturaHabsEstetica = temp5;
        //Clase Vida
        rehacerVida(ref contenedor.vida, save.vidaData);
        //Mesh Roca
        Mesh temp6 = new Mesh();

        Vector3[] temp6v = new Vector3[save.rocaVertices.Length / 3];
        Vector3[] temp6n = new Vector3[save.rocaNormals.Length / 3];
        for (int i = 0; i < temp6v.Length; i++)
        {
            temp6v[i].x = save.rocaVertices[i * 3];
            temp6v[i].y = save.rocaVertices[i * 3 + 1];
            temp6v[i].z = save.rocaVertices[i * 3 + 2];
            temp6n[i].x = save.rocaNormals[i * 3];
            temp6n[i].y = save.rocaNormals[i * 3 + 1];
            temp6n[i].z = save.rocaNormals[i * 3 + 2];
        }
        temp6.vertices = temp6v;
        temp6.normals  = temp6n;
        Vector2[] temp6u = new Vector2[save.rocaUVs.Length / 2];
        for (int i = 0; i < temp6u.Length; i++)
        {
            temp6u[i].x = save.rocaUVs[i * 2];
            temp6u[i].y = save.rocaUVs[i * 2 + 1];
        }
        temp6.uv = temp6u;
        int[] temp6t = new int[save.rocaTriangulos.Length];
        for (int i = 0; i < temp6t.Length; i++)
        {
            temp6t[i] = save.rocaTriangulos[i];
        }
        temp6.triangles = temp6t;
        contenedor.roca = temp6;
        //Mesh Agua
        Mesh temp7 = new Mesh();

        Vector3[] temp7v = new Vector3[save.aguaVertices.Length / 3];
        Vector3[] temp7n = new Vector3[save.aguaNormals.Length / 3];
        for (int i = 0; i < temp7v.Length; i++)
        {
            temp7v[i].x = save.aguaVertices[i * 3];
            temp7v[i].y = save.aguaVertices[i * 3 + 1];
            temp7v[i].z = save.aguaVertices[i * 3 + 2];
            temp7n[i].x = save.aguaNormals[i * 3];
            temp7n[i].y = save.aguaNormals[i * 3 + 1];
            temp7n[i].z = save.aguaNormals[i * 3 + 2];
        }
        temp7.vertices = temp7v;
        temp7.normals  = temp7n;
        Vector2[] temp7u = new Vector2[save.aguaUVs.Length / 2];
        for (int i = 0; i < temp7u.Length; i++)
        {
            temp7u[i].x = save.aguaUVs[i * 2];
            temp7u[i].y = save.aguaUVs[i * 2 + 1];
        }
        temp7.uv = temp7u;
        int[] temp7t = new int[save.aguaTriangulos.Length];
        for (int i = 0; i < temp7t.Length; i++)
        {
            temp7t[i] = save.aguaTriangulos[i];
        }
        temp7.triangles = temp7t;
        contenedor.agua = temp7;
        //Otras variables
        contenedor.nivelAgua   = save.nivelAgua;
        contenedor.tamanoPlaya = save.tamanoPlaya;

        contenedor.energia          = save.energia;
        contenedor.compBas          = save.compBas;
        contenedor.compAdv          = save.compAdv;
        contenedor.matBio           = save.matBio;
        contenedor.mejorasCompradas = new bool[save.mejorasCompradas.Length];
        for (int i = 0; i < save.mejorasCompradas.Length; i++)
        {
            contenedor.mejorasCompradas[i] = save.mejorasCompradas[i];
        }
        contenedor.etapaJuego = save.etapaJuego;
        //Fin
    }
Example #13
0
    /*Construye un conjunto de datos representativos del estado del juego a partir de
     * unos datos serializables.
     */
    public static void rehacerScript(SaveData save, ref ValoresCarga contenedor)
    {
        //Textura Heightmap (Textura_Planeta)
        Texture2D temp1 = new Texture2D(save.heightmapW, save.heightmapH);
        Color[] temp1a = new Color[save.heightmapData.Length];
        for (int i = 0; i < save.heightmapData.Length; i++) {
            temp1a[i].r = save.heightmapData[i];
            temp1a[i].g = save.heightmapData[i];
            temp1a[i].b = save.heightmapData[i];
        }
        temp1.SetPixels(temp1a);
        temp1.Apply();
        contenedor.texturaBase = temp1;
        //Textura elementos (Textura_Recursos)
        Texture2D temp2 = new Texture2D(save.elementosW, save.elementosH);
        Color[] temp2a = new Color[save.elementosData.Length / 4];
        for (int i = 0; i < temp2a.Length; i++) {
            temp2a[i].r = save.elementosData[i * 4];
            temp2a[i].g = save.elementosData[i * 4 + 1];
            temp2a[i].b = save.elementosData[i * 4 + 2];
            temp2a[i].a = save.elementosData[i * 4 + 3];
        }
        temp2.SetPixels(temp2a);
        temp2.Apply();
        contenedor.texturaElementos = temp2;
        //Textura habitats (Textura_Habitats)
        Texture2D temp4 = new Texture2D(save.habitatsW, save.habitatsH);
        Color[] temp4a = new Color[save.habitatsData.Length / 4];
        for (int i = 0; i < temp4a.Length; i++) {
            temp4a[i].r = save.habitatsData[i * 4];
            temp4a[i].g = save.habitatsData[i * 4 + 1];
            temp4a[i].b = save.habitatsData[i * 4 + 2];
            temp4a[i].a = save.habitatsData[i * 4 + 3];
        }
        temp4.SetPixels(temp4a);
        temp4.Apply();
        contenedor.texturaHabitats = temp4;
        //Textura habitats estetica (Textura_Habitats_Estetica)
        Texture2D temp5 = new Texture2D(save.esteticaW, save.esteticaH);
        Color[] temp5a = new Color[save.esteticaData.Length / 4];
        for (int i = 0; i < temp5a.Length; i++) {
            temp5a[i].r = save.esteticaData[i * 4];
            temp5a[i].g = save.esteticaData[i * 4 + 1];
            temp5a[i].b = save.esteticaData[i * 4 + 2];
            temp5a[i].a = save.esteticaData[i * 4 + 3];
        }
        temp5.SetPixels(temp5a);
        temp5.Apply();
        contenedor.texturaHabsEstetica = temp5;
        //Clase Vida
        rehacerVida(ref contenedor.vida, save.vidaData);
        //Mesh Roca
        Mesh temp6 = new Mesh();
        Vector3[] temp6v = new Vector3[save.rocaVertices.Length / 3];
        Vector3[] temp6n = new Vector3[save.rocaNormals.Length / 3];
        for (int i = 0; i < temp6v.Length; i++) {
            temp6v[i].x = save.rocaVertices[i * 3];
            temp6v[i].y = save.rocaVertices[i * 3 + 1];
            temp6v[i].z = save.rocaVertices[i * 3 + 2];
            temp6n[i].x = save.rocaNormals[i * 3];
            temp6n[i].y = save.rocaNormals[i * 3 + 1];
            temp6n[i].z = save.rocaNormals[i * 3 + 2];
        }
        temp6.vertices = temp6v;
        temp6.normals = temp6n;
        Vector2[] temp6u = new Vector2[save.rocaUVs.Length / 2];
        for (int i = 0; i < temp6u.Length; i++) {
            temp6u[i].x = save.rocaUVs[i * 2];
            temp6u[i].y = save.rocaUVs[i * 2 + 1];
        }
        temp6.uv = temp6u;
        int[] temp6t = new int[save.rocaTriangulos.Length];
        for (int i = 0; i < temp6t.Length; i++) {
            temp6t[i] = save.rocaTriangulos[i];
        }
        temp6.triangles = temp6t;
        contenedor.roca = temp6;
        //Mesh Agua
        Mesh temp7 = new Mesh();
        Vector3[] temp7v = new Vector3[save.aguaVertices.Length / 3];
        Vector3[] temp7n = new Vector3[save.aguaNormals.Length / 3];
        for (int i = 0; i < temp7v.Length; i++) {
            temp7v[i].x = save.aguaVertices[i * 3];
            temp7v[i].y = save.aguaVertices[i * 3 + 1];
            temp7v[i].z = save.aguaVertices[i * 3 + 2];
            temp7n[i].x = save.aguaNormals[i * 3];
            temp7n[i].y = save.aguaNormals[i * 3 + 1];
            temp7n[i].z = save.aguaNormals[i * 3 + 2];
        }
        temp7.vertices = temp7v;
        temp7.normals = temp7n;
        Vector2[] temp7u = new Vector2[save.aguaUVs.Length / 2];
        for (int i = 0; i < temp7u.Length; i++) {
            temp7u[i].x = save.aguaUVs[i * 2];
            temp7u[i].y = save.aguaUVs[i * 2 + 1];
        }
        temp7.uv = temp7u;
        int[] temp7t = new int[save.aguaTriangulos.Length];
        for (int i = 0; i < temp7t.Length; i++) {
            temp7t[i] = save.aguaTriangulos[i];
        }
        temp7.triangles = temp7t;
        contenedor.agua = temp7;
        //Otras variables
        contenedor.nivelAgua = save.nivelAgua;
        contenedor.tamanoPlaya = save.tamanoPlaya;

        contenedor.energia = save.energia;
        contenedor.compBas = save.compBas;
        contenedor.compAdv = save.compAdv;
        contenedor.matBio = save.matBio;
        contenedor.mejorasCompradas = new bool[save.mejorasCompradas.Length];
        for (int i = 0; i < save.mejorasCompradas.Length; i++) {
            contenedor.mejorasCompradas[i] = save.mejorasCompradas[i];
        }
        contenedor.etapaJuego = save.etapaJuego;
        //Fin
    }
Example #14
0
 //Guardar el archivo con el avance en el juego
 public static void Save(ValoresCarga contenedor)                                            //Sobrecargado
 {
     Save(currentFilePath + currentFileName, contenedor);
 }
Example #15
0
    private void creacionCarga(ValoresCarga contenedor)
    {
        Debug.Log (FuncTablero.formateaTiempo() + ": Iniciando el script de carga de valores...");
        Texture2D texBase = contenedor.texturaBase;
        FuncTablero.inicializa(texBase);
        Mesh rocaMesh = contenedor.roca;
        Mesh aguaMesh = contenedor.agua;
        float nivelAgua = contenedor.nivelAgua;
        float tamanoPlaya = contenedor.tamanoPlaya;
        //Trabajar con la textura Textura_Planeta y crear el mapa lógico a la vez
        Debug.Log (FuncTablero.formateaTiempo() + ": Aplicando textura de ruido...");
        Texture2D texturaBase = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;
        texturaBase = texBase;
        texturaBase.Apply();
        Debug.Log (FuncTablero.formateaTiempo() + ": Asignando Mesh a la roca...");
        MeshFilter Roca = objetoRoca.GetComponent<MeshFilter>();
        Roca.mesh = rocaMesh;
        //Se añade el collider aqui, para que directamente tenga la mesh adecuada
        Debug.Log (FuncTablero.formateaTiempo() + ": Creando collider de la roca...");
           	objetoRoca.AddComponent<MeshCollider>();
        objetoRoca.GetComponent<MeshCollider>().sharedMesh = rocaMesh;
        Debug.Log (FuncTablero.formateaTiempo() + ": Asignando Mesh al oceano...");
        MeshFilter Agua = objetoOceano.GetComponent<MeshFilter>();
        Agua.mesh = aguaMesh;
        Debug.Log (FuncTablero.formateaTiempo() + ": Completando detalles...");
        //se ajusta la propiedad de nivel de agua del shader
        objetoOceano.renderer.sharedMaterial.SetFloat("_nivelMar", nivelAgua);
        objetoOceano.renderer.sharedMaterial.SetFloat("_tamPlaya", tamanoPlaya);

        Debug.Log (FuncTablero.formateaTiempo() + ": Cargando texturas de habitats...");
        //obtener la textura de habitats del array de materiales de roca. Habitats esta en la 1ª posicion.
        objetoRoca.renderer.sharedMaterials[2].mainTexture = contenedor.texturaElementos;
        objetoRoca.renderer.sharedMaterials[1].mainTexture = contenedor.texturaHabsEstetica;
        Texture2D texHabitats = objetoRoca.renderer.sharedMaterials[1].GetTexture("_FiltroTex") as Texture2D;
        texHabitats = contenedor.texturaHabitats;
        objetoRoca.renderer.sharedMaterials[1].SetTexture("_FiltroTex", texHabitats);
        Debug.Log (FuncTablero.formateaTiempo() + ": Cargando la vida...");
        vida = new Vida(contenedor.vida);
        vida.setObjetoRoca(objetoRoca.transform);
        Debug.Log (FuncTablero.formateaTiempo() + ": Carga completada.");
    }
Example #16
0
    public void rellenaContenedor(ref ValoresCarga contenedor)
    {
        contenedor.texturaBase = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;
        contenedor.texturaElementos = objetoRoca.renderer.sharedMaterials[2].mainTexture as Texture2D;
        contenedor.texturaHabitats = objetoRoca.renderer.sharedMaterials[1].GetTexture("_FiltroTex") as Texture2D;
        contenedor.texturaHabsEstetica = objetoRoca.renderer.sharedMaterials[1].mainTexture as Texture2D;
        contenedor.vida = vida;
        contenedor.roca = objetoRoca.GetComponent<MeshFilter>().mesh;
        contenedor.agua = objetoOceano.GetComponent<MeshFilter>().mesh;
        contenedor.nivelAgua = FuncTablero.getNivelAgua();
        contenedor.tamanoPlaya = FuncTablero.getTamanoPlaya();

        contenedor.energia = energia;
        contenedor.compBas = componentesBasicos;
        contenedor.compAdv = componentesAvanzados;
        contenedor.matBio = materialBiologico;

        contenedor.mejorasCompradas = mejoras.mejorasCompradas;
        contenedor.etapaJuego = (int)interfaz.etapaJuego;
    }
Example #17
0
    /* Genera un archivo SaveData (serializable) a partir de un conjunto de datos
     * representativo del estado del juego pero no serializable.
     */
    private static SaveData generarValores(ValoresCarga contenedor)
    {
        SaveData resultado = new SaveData();
        //Textura Heightmap (Textura_Planeta)
        resultado.heightmapW = contenedor.texturaBase.width;
        resultado.heightmapH = contenedor.texturaBase.height;
        Color[] temp1 = contenedor.texturaBase.GetPixels();
        resultado.heightmapData = new float[temp1.Length];
        for (int i = 0; i < temp1.Length; i++) {
            resultado.heightmapData[i] = temp1[i].r;
        }
        //Textura elementos (Textura_Recursos)
        resultado.elementosW = contenedor.texturaElementos.width;
        resultado.elementosH = contenedor.texturaElementos.height;
        Color[] temp2 = contenedor.texturaElementos.GetPixels();
        resultado.elementosData = new float[temp2.Length * 4];
        for (int i = 0; i < temp2.Length; i++) {
            resultado.elementosData[i * 4] = temp2[i].r;
            resultado.elementosData[i * 4 + 1] = temp2[i].g;
            resultado.elementosData[i * 4 + 2] = temp2[i].b;
            resultado.elementosData[i * 4 + 3] = temp2[i].a;
        }
        //Textura habitats (Textura_Habitats)
        resultado.habitatsW = contenedor.texturaHabitats.width;
        resultado.habitatsH = contenedor.texturaHabitats.height;
        Color[] temp4 = contenedor.texturaHabitats.GetPixels();
        resultado.habitatsData = new float[temp4.Length * 4];
        for (int i = 0; i < temp4.Length; i++) {
            resultado.habitatsData[i * 4] = temp4[i].r;
            resultado.habitatsData[i * 4 + 1] = temp4[i].g;
            resultado.habitatsData[i * 4 + 2] = temp4[i].b;
            resultado.habitatsData[i * 4 + 3] = temp4[i].a;
        }
        //Textura habitats estetica (Textura_Habitats_Estetica)
        resultado.esteticaW = contenedor.texturaHabsEstetica.width;
        resultado.esteticaH = contenedor.texturaHabsEstetica.height;
        Color[] temp5 = contenedor.texturaHabsEstetica.GetPixels();
        resultado.esteticaData = new float[temp5.Length * 4];
        for (int i = 0; i < temp5.Length; i++) {
            resultado.esteticaData[i * 4] = temp5[i].r;
            resultado.esteticaData[i * 4 + 1] = temp5[i].g;
            resultado.esteticaData[i * 4 + 2] = temp5[i].b;
            resultado.esteticaData[i * 4 + 3] = temp5[i].a;
        }
        //Clase Vida
        generarVidaSerializable(contenedor.vida, ref resultado.vidaData);
        //Mesh Roca
        Vector3[] temp6 = contenedor.roca.vertices;
        Vector3[] temp7 = contenedor.roca.normals;
        resultado.rocaVertices = new float[temp6.Length * 3];
        resultado.rocaNormals = new float[temp7.Length * 3];
        for (int i = 0; i < temp6.Length; i++) {
            resultado.rocaVertices[i * 3] = temp6[i].x;
            resultado.rocaVertices[i * 3 + 1] = temp6[i].y;
            resultado.rocaVertices[i * 3 + 2] = temp6[i].z;
            resultado.rocaNormals[i * 3] = temp7[i].x;
            resultado.rocaNormals[i * 3 + 1] = temp7[i].y;
            resultado.rocaNormals[i * 3 + 2] = temp7[i].z;
        }
        Vector2[] temp8 = contenedor.roca.uv;
        resultado.rocaUVs = new float[temp8.Length * 2];
        for (int i = 0; i < temp8.Length; i++) {
            resultado.rocaUVs[i * 2] = temp8[i].x;
            resultado.rocaUVs[i * 2 + 1] = temp8[i].y;
        }
        int[] temp9 = contenedor.roca.triangles;
        resultado.rocaTriangulos = new int[temp9.Length];
        for (int i = 0; i < temp9.Length; i++) {
            resultado.rocaTriangulos[i] = temp9[i];
        }
        //Mesh Agua
        Vector3[] temp10 = contenedor.agua.vertices;
        Vector3[] temp11 = contenedor.agua.normals;
        resultado.aguaVertices = new float[temp10.Length * 3];
        resultado.aguaNormals = new float[temp11.Length * 3];
        for (int i = 0; i < temp10.Length; i++) {
            resultado.aguaVertices[i * 3] = temp10[i].x;
            resultado.aguaVertices[i * 3 + 1] = temp10[i].y;
            resultado.aguaVertices[i * 3 + 2] = temp10[i].z;
            resultado.aguaNormals[i * 3] = temp11[i].x;
            resultado.aguaNormals[i * 3 + 1] = temp11[i].y;
            resultado.aguaNormals[i * 3 + 2] = temp11[i].z;
        }
        Vector2[] temp12 = contenedor.agua.uv;
        resultado.aguaUVs = new float[temp12.Length * 2];
        for (int i = 0; i < temp12.Length; i++) {
            resultado.aguaUVs[i * 2] = temp12[i].x;
            resultado.aguaUVs[i * 2 + 1] = temp12[i].y;
        }
        int[] temp13 = contenedor.agua.triangles;
        resultado.aguaTriangulos = new int[temp13.Length];
        for (int i = 0; i < temp13.Length; i++) {
            resultado.aguaTriangulos[i] = temp13[i];
        }
        //Otras variables
        resultado.nivelAgua = contenedor.nivelAgua;
        resultado.tamanoPlaya = contenedor.tamanoPlaya;

        resultado.energia = contenedor.energia;
        resultado.compBas = contenedor.compBas;
        resultado.compAdv = contenedor.compAdv;
        resultado.matBio = contenedor.matBio;
        resultado.mejorasCompradas = new bool[contenedor.mejorasCompradas.Length];
        for (int i = 0; i < contenedor.mejorasCompradas.Length; i++) {
            resultado.mejorasCompradas[i] = contenedor.mejorasCompradas[i];
        }
        resultado.etapaJuego = contenedor.etapaJuego;
        //Fin
        return resultado;
    }