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; } }
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> (); }
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(); }
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(); } }
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."); }
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; }
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; } } } } }
//Guardar el archivo con el avance en el juego public static void Save(ValoresCarga contenedor) { //Sobrecargado Save(currentFilePath + currentFileName, contenedor); }
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(); }
/* 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); }
/*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 }
//Guardar el archivo con el avance en el juego public static void Save(ValoresCarga contenedor) //Sobrecargado { Save(currentFilePath + currentFileName, contenedor); }
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."); }
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; }
/* 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; }