示例#1
0
//	private void cargarJuego() {
//		int w = saveGame.heightmapW;
//		int h = saveGame.heightmapH;
//		Color[] pixels = new Color[w * h];
//		for (int i = 0; i < w * h; i++) {
//			float temp = saveGame.heightmapData[i];
//			pixels[i] = new Color(temp, temp, temp);
//		}
//		if (texturaBase.width != w || texturaBase.height != h) {
//			Debug.LogError("Las dimensiones de las texturas no coinciden!");
//		}
//		texturaBase.SetPixels(pixels);
//		texturaBase.Apply();
//		estado = 1;
//	}

    //Menus personalizados --------------------------------------------------------------------------------------------------------------------

    private void menuPrincipal()
    {
        GUILayout.BeginArea(new Rect((float)cuantoW * 20.5f, cuantoH * 20, cuantoW * 7, cuantoH * 5));
        GUILayout.BeginVertical();
        if (GUILayout.Button(new GUIContent("Comenzar juego", "Comenzar un juego nuevo"), "boton_menu_1"))
        {
            pixels = new Color[texturaBase.width * texturaBase.height];
            FuncTablero.inicializa(texturaBase);
            faseCreacion    = 0;
            paso1Completado = false;
//			objetoRoca.renderer.enabled = true;
            objetoRoca.animation.Play("HologramaAparecer");
            Camera.main.animation.Play("AcercarseHolograma");
            estado = 5;
        }
        if (GUILayout.Button(new GUIContent("Cargar", "Acceder a las partidas guardadas"), "boton_menu_2"))
        {
            estado = 6;
        }
        if (GUILayout.Button(new GUIContent("Opciones", "Acceder a las opciones"), "boton_menu_3"))
        {
//			Camera.main.animation.Play("AcercarsePantalla");
            estado = 2;
        }
        if (GUILayout.Button(new GUIContent("Cr\u00e9ditos", "Visualiza los cr\u00e9ditos"), "boton_menu_3"))           //U+00E9 es el caracter unicode 'é'
        {
            estado = 3;
        }
        if (GUILayout.Button(new GUIContent("Salir", "Salir de este juego"), "boton_menu_4"))
        {
            estado = 4;
        }
        GUILayout.EndVertical();
        GUILayout.EndArea();
    }
示例#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> ();
    }
示例#3
0
    private IEnumerator creacionParte3()
    {
        trabajando  = true;
        progreso    = 0.0f;
        GUI.enabled = false;
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando creacionParte3().");
        Debug.Log(FuncTablero.formateaTiempo() + ": Creando el tablero...");
        yield return(new WaitForSeconds(0.1f));

        Casilla[,] tablero = FuncTablero.iniciaTablero(texturaBase, texHabitats, texHabitatsEstetica, texElems, rocaMesh, Vector3.zero);
        progreso           = 0.7f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Creando la vida...");
        yield return(new WaitForSeconds(0.01f));

        vida     = new Vida(tablero);
        progreso = 1.0f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado creacionParte3().");
        yield return(new WaitForSeconds(0.01f));

        progreso     = 0.0f;
        GUI.enabled  = true;
        trabajando   = false;
        faseCreacion = 0;
        estado       = 1;
    }
示例#4
0
    public float escalaTiempo = 1.0f;                                                                           //La escala temporal a la que se updateará todo

    //Tipos especiales ----------------------------------------------------------------------------------------------------------------------


    //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 Pruebas. Creacion inicial...");
        creacionInicial();
        Debug.Log(FuncTablero.formateaTiempo() + ": Completada la creacion del planeta.");
    }
示例#5
0
    //Funciones basicas ----------------------------------------------------------------------------------------------------------------------

    void Awake()
    {
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando el metodo Awake() de la escena inicial...");
        miObjeto = this.transform;
        GameObject[] cadena = GameObject.FindGameObjectsWithTag("Carga");
        if (cadena.Length > 1)
        {
            contenedorTexturas = cadena[0];
            DontDestroyOnLoad(cadena[0]);
            for (int i = 1; i < cadena.Length; i++)
            {
                Destroy(cadena[i]);
            }
        }
        else
        {
            contenedorTexturas = cadena[0];
            DontDestroyOnLoad(cadena[0]);
        }
        if (PlayerPrefs.HasKey("MusicaOn"))
        {
            if (PlayerPrefs.GetInt("MusicaOn") == 1)
            {
                musicaOn = true;
            }
            else
            {
                musicaOn = false;
            }
        }
        if (PlayerPrefs.HasKey("MusicaVol"))
        {
            musicaVol = PlayerPrefs.GetFloat("MusicaVol");
        }
        if (PlayerPrefs.HasKey("SfxOn"))
        {
            if (PlayerPrefs.GetInt("SfxOn") == 1)
            {
                sfxOn = true;
            }
            else
            {
                sfxOn = false;
            }
        }
        if (PlayerPrefs.HasKey("SfxVol"))
        {
            sfxVol = PlayerPrefs.GetFloat("SfxVol");
        }
        SaveLoad.compruebaRuta();
        numSaves     = SaveLoad.FileCount();
        nombresSaves = new string[numSaves];
        nombresSaves = SaveLoad.getFileNames();
        objetoRoca.renderer.sharedMaterials[1].SetFloat("_nivelMar", nivelAguaInit);
        objetoRoca.renderer.sharedMaterials[1].SetFloat("_tamPlaya", tamanoPlayasInit);
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado el metodo Awake().");
    }
示例#6
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();
 }
示例#7
0
    private void creacionInicial()
    {
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando la creacion desde cero...");
        //Trabajar con la textura Textura_Planeta y crear el mapa lógico a la vez
        Texture2D texturaBase = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;

        Color[] pixels = new Color[texturaBase.width * texturaBase.height];
        FuncTablero.inicializa(texturaBase);
        Debug.Log(FuncTablero.formateaTiempo() + ": Creando ruido...");
        pixels = FuncTablero.ruidoTextura();                                                            //Se crea el ruido para la textura base y normales...
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Suavizando polos y bordes...");
        pixels = FuncTablero.suavizaBordeTex(pixels, texturaBase.width / 20);                           //Se suaviza el borde lateral...
        pixels = FuncTablero.suavizaPoloTex(pixels);                                                    //Se suavizan los polos...
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Aplicando cambios...");
        texturaBase.SetPixels(pixels);
        texturaBase.Apply();
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Extruyendo vertices de la roca...");
        float      extrusion = 0.45f;
        MeshFilter Roca      = objetoRoca.GetComponent <MeshFilter>();
        Mesh       meshTemp  = Roca.mesh;

        meshTemp  = FuncTablero.extruyeVerticesTex(meshTemp, texturaBase, extrusion, objetoRoca.transform.position);
        Roca.mesh = meshTemp;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Construyendo collider...");
        //Se añade el collider aqui, para que directamente tenga la mesh adecuada
        objetoRoca.AddComponent <MeshCollider>();
        objetoRoca.GetComponent <MeshCollider>().sharedMesh = meshTemp;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Calculando y extruyendo vertices del oceano...");
        MeshFilter Agua     = objetoOceano.GetComponent <MeshFilter>();
        Mesh       meshAgua = Agua.mesh;

        meshAgua  = FuncTablero.extruyeVerticesValor(meshAgua, FuncTablero.getNivelAgua(), extrusion, objetoOceano.transform.position);
        Agua.mesh = meshAgua;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Rellenando detalles...");
        //se ajusta la propiedad de nivel de agua del shader
        objetoOceano.renderer.sharedMaterial.SetFloat("_nivelMar", FuncTablero.getNivelAgua());
        objetoOceano.renderer.sharedMaterial.SetFloat("_tamPlaya", FuncTablero.getTamanoPlaya());

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

        Debug.Log(FuncTablero.formateaTiempo() + ": Terminado. Creando el tablero...");
        Casilla[,] tablero = FuncTablero.iniciaTablero(texturaBase, texHabitats, texHabitatsEstetica, texElems, Roca.mesh, objetoRoca.transform.position);
        Debug.Log(FuncTablero.formateaTiempo() + ": Terminado. Creando Vida...");
        vida = new Vida(tablero, objetoRoca.transform);
        Debug.Log(FuncTablero.formateaTiempo() + ": Completada la creacion del planeta.");
    }
示例#8
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.");
    }
示例#9
0
    private IEnumerator creacionParte2()
    {
        trabajando  = true;
        progreso    = 0.0f;
        GUI.enabled = false;
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando creacionParte2().");
        yield return(new WaitForSeconds(0.1f));

        progreso = 0.1f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Instanciando la esfera roca...");
        yield return(new WaitForSeconds(0.01f));

        Mesh meshTemp = GameObject.Instantiate(meshEsfera) as Mesh;

        progreso = 0.2f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Extruyendo vertices de roca...");
        yield return(new WaitForSeconds(0.01f));

        meshTemp = FuncTablero.extruyeVerticesTex(meshTemp, texturaBase, 0.45f, new Vector3(0.0f, 0.0f, 0.0f));
        progreso = 0.6f;
        yield return(new WaitForSeconds(0.01f));

        rocaMesh = meshTemp;
        Debug.Log(FuncTablero.formateaTiempo() + ": Instanciando la esfera agua...");
        yield return(new WaitForSeconds(0.01f));

        Mesh meshAgua = GameObject.Instantiate(meshEsfera) as Mesh;

        progreso = 0.7f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Extruyendo vertices de agua...");
        yield return(new WaitForSeconds(0.01f));

        meshAgua = FuncTablero.extruyeVerticesValor(meshAgua, nivelAguaInit, 0.45f, new Vector3(0.0f, 0.0f, 0.0f));
        aguaMesh = meshAgua;
        progreso = 1.0f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completada creacionParte2().");
        yield return(new WaitForSeconds(0.01f));

        nombrePlaneta  = "PL" + Random.Range(1, 50000).ToString();
        nombreEstrella = "SP" + Random.Range(200, 6000).ToString();
        progreso       = 0.0f;
        trabajando     = false;
        GUI.enabled    = true;
        faseCreacion   = 2;
    }
示例#10
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;
    }
示例#11
0
    //Devuelve  true si se ha producido una colision con el planeta y además las coordenadas de la casilla del tablero en la que ha impactado el raycast (en caso de producirse)
    public bool raycastRoca(Vector3 posicion, ref int x, ref int y, out RaycastHit hit)
    {
        //RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(posicion);

        if (objetoRoca.collider.Raycast(ray, out hit, Mathf.Infinity))
        {
            double    xTemp = hit.textureCoord.x;
            double    yTemp = hit.textureCoord.y;
            Texture2D tex   = objetoRoca.renderer.sharedMaterial.mainTexture as Texture2D;
            xTemp = xTemp * tex.width / FuncTablero.getRelTexTabAncho();
            yTemp = (yTemp * tex.height / FuncTablero.getRelTexTabAlto());
            x     = (int)xTemp;
            y     = (int)yTemp;
            FuncTablero.convierteCoordenadas(ref y, ref x);
            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#12
0
    private IEnumerator creacionParte1()
    {
        trabajando  = true;
        progreso    = 0.0f;
        GUI.enabled = false;
        Debug.Log(FuncTablero.formateaTiempo() + ": Iniciando creacionParte1()...");
        yield return(new WaitForSeconds(0.1f));

        progreso = 0.1f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Creando ruido...");
        yield return(new WaitForSeconds(0.01f));

        pixels   = FuncTablero.ruidoTextura();                                                                                  //Se crea el ruido para la textura base y normales...
        progreso = 0.7f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Suavizando borde...");
        yield return(new WaitForSeconds(0.01f));

        pixels   = FuncTablero.suavizaBordeTex(pixels, texturaBase.width / 20);                 //Se suaviza el borde lateral...
        progreso = 0.8f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Suavizando polos...");
        yield return(new WaitForSeconds(0.01f));

        pixels   = FuncTablero.suavizaPoloTex(pixels);                                                                  //Se suavizan los polos...
        progreso = 0.9f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completado. Aplicando cambios...");
        yield return(new WaitForSeconds(0.01f));

        texturaBase.SetPixels(pixels);
        texturaBase.Apply();
        progreso = 1.0f;
        Debug.Log(FuncTablero.formateaTiempo() + ": Completada creacionParte1().");
        yield return(new WaitForSeconds(0.01f));

        progreso        = 0.0f;
        trabajando      = false;
        GUI.enabled     = true;
        paso1Completado = true;
    }
示例#13
0
    private void creacionParte2Interfaz()
    {
        GUI.Label(new Rect(cuantoW * 2, cuantoH * 7, cuantoW * 15, cuantoH * 1), "Especifique los detalles de la orografia del planeta deseado.", "label_centrada");
        GUI.Box(new Rect(cuantoW, cuantoH * 9, cuantoW * 10, cuantoH * 19), "");
        GUILayout.BeginArea(new Rect(cuantoW, cuantoH * 9, cuantoW * 10, cuantoH * 15));
        GUILayout.BeginVertical();
        //Controles para alterar el tipo de terreno ya creado: tipo de planeta a escoger con la "rampa" adecuada, altura de las montañas,
        //cantidad de agua, etc.
        //Despues de este paso se colorea el mapa creado.

        GUILayout.Label("Nivel del agua", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Min");
        nivelAguaInit = GUILayout.HorizontalSlider(nivelAguaInit, 0.15f, 0.45f);
        GUILayout.Label("Max");
        GUILayout.EndHorizontal();
        float nivelAguaTemp = Mathf.Lerp(0.0f, 1.0f, (nivelAguaInit - 0.15f) / (0.45f - 0.15f));

        if (nivelAguaTemp <= 0.25f)
        {
            GUILayout.Label("Muy bajo");
        }
        else if (nivelAguaTemp <= 0.5f)
        {
            GUILayout.Label("Bajo");
        }
        else if (nivelAguaTemp <= 0.75f)
        {
            GUILayout.Label("Alto");
        }
        else
        {
            GUILayout.Label("Muy alto");
        }

        if (GUI.changed)
        {
            objetoRoca.renderer.sharedMaterials[1].SetFloat("_nivelMar", nivelAguaInit);
        }

        GUILayout.Label("Temperatura del planeta", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Min");
        temperaturaInit = GUILayout.HorizontalSlider(temperaturaInit, 0.0f, 1.0f);
        GUILayout.Label("Max");
        GUILayout.EndHorizontal();
        if (temperaturaInit <= 0.25f)
        {
            GUILayout.Label("Helado");
        }
        else if (temperaturaInit <= 0.5f)
        {
            GUILayout.Label("Frio");
        }
        else if (temperaturaInit <= 0.75f)
        {
            GUILayout.Label("Calido");
        }
        else
        {
            GUILayout.Label("Abrasador");
        }

        GUILayout.Label("Longitud de las playas", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Min");
        tamanoPlayasInit = GUILayout.HorizontalSlider(tamanoPlayasInit, 0.02f, 0.06f);
        GUILayout.Label("Max");
        GUILayout.EndHorizontal();
        float tamanoPlayasTemp = Mathf.Lerp(0.0f, 1.0f, (tamanoPlayasInit - 0.02f) / (0.06f - 0.02f));

        if (tamanoPlayasTemp <= 0.25f)
        {
            GUILayout.Label("Muy peque\u00f1as");
        }
        else if (tamanoPlayasTemp <= 0.5f)
        {
            GUILayout.Label("Cortas");
        }
        else if (tamanoPlayasTemp <= 0.75f)
        {
            GUILayout.Label("Largas");
        }
        else
        {
            GUILayout.Label("Enormes");
        }
//		GUILayout.Label(tamanoPlayasInit.ToString());

        if (GUI.changed)
        {
            objetoRoca.renderer.sharedMaterials[1].SetFloat("_tamPlaya", tamanoPlayasInit);
        }

        GUILayout.EndVertical();
        GUILayout.EndArea();
        GUILayout.BeginArea(new Rect(cuantoW * 12, cuantoH * 28, cuantoW * 35, cuantoH * 2));
        GUILayout.BeginHorizontal();
        if (GUILayout.Button(new GUIContent("Volver", "Volver a la primera fase"), GUILayout.Height(cuantoH)))
        {
            faseCreacion = 0;
        }
        GUILayout.Space(cuantoW * 28);
        if (GUILayout.Button(new GUIContent("Siguiente", "Pasar a la tercera fase"), GUILayout.Height(cuantoH)))
        {
            FuncTablero.setNivelAgua(nivelAguaInit);
            FuncTablero.setTemperatura(temperaturaInit);
            FuncTablero.setTamanoPlaya(tamanoPlayasInit);
            StartCoroutine(creacionParte2());
        }
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }
示例#14
0
    private void creacionParte1Interfaz()
    {
        GUI.Label(new Rect(cuantoW * 2, cuantoH * 7, cuantoW * 15, cuantoH * 1), "Introduzca los parametros de busqueda para el proximo planeta a colonizar.", "label_centrada");
        GUI.Box(new Rect(cuantoW, cuantoH * 9, cuantoW * 10, cuantoH * 19), "");
        GUILayout.BeginArea(new Rect(cuantoW, cuantoH * 9, cuantoW * 10, cuantoH * 19));
        GUILayout.BeginVertical();
        //Controles para alterar el tipo de terreno a crear aleatoriamente: cosas que no influyan mucho, nombre, etc. o cosas que
        //influyan en la creacion del ruido, por ejemplo el numero de octavas a usar podemos llamarlo "factor de erosion" o cosas asi.
        //Despues de este paso se crea el mapa aleatorio con ruido.

        GUILayout.Label("Altura del terreno", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Bajo");
        gananciaInit = GUILayout.HorizontalSlider(gananciaInit, 0.45f, 0.55f);
        GUILayout.Label("Alto");
        GUILayout.EndHorizontal();
        if (gananciaInit <= 0.475f)
        {
            GUILayout.Label("Bajo");
        }
        else if (gananciaInit <= 0.5f)
        {
            GUILayout.Label("Normal");
        }
        else if (gananciaInit <= 0.525f)
        {
            GUILayout.Label("Alto");
        }
        else
        {
            GUILayout.Label("Muy alto");
        }

        GUILayout.Label("Tama\u00f1o de continentes", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Bajo");
        escalaInit = GUILayout.HorizontalSlider(escalaInit, 0.0055f, 0.001f);
        GUILayout.Label("Alto");
        GUILayout.EndHorizontal();
        if (escalaInit >= 0.0045f)
        {
            GUILayout.Label("Islas peque\u00f1as");
        }
        else if (escalaInit >= 0.0033f)
        {
            GUILayout.Label("Islas grandes");
        }
        else if (escalaInit >= 0.0021f)
        {
            GUILayout.Label("Continentes");
        }
        else
        {
            GUILayout.Label("Grandes continentes");
        }

        GUILayout.Label("Irregularidad del relieve", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Baja");
        octavasFloat = GUILayout.HorizontalSlider(octavasFloat, 2.0f, 10.0f);
        GUILayout.Label("Alta");
        GUILayout.EndHorizontal();
        if (octavasFloat <= 4.0f)
        {
            GUILayout.Label("Terreno liso");
        }
        else if (octavasFloat <= 6.0f)
        {
            GUILayout.Label("Con relieve");
        }
        else if (octavasFloat <= 8.0f)
        {
            GUILayout.Label("Escarpado");
        }
        else
        {
            GUILayout.Label("Muy escarpado");
        }

        GUILayout.Label("Variacion", "label_centrada");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Baja");
        lacunaridadInit = GUILayout.HorizontalSlider(lacunaridadInit, 1.4f, 3.1f);
        GUILayout.Label("Alta");
        GUILayout.EndHorizontal();
        float lacunaridadInitTemp = (lacunaridadInit - 1.4f) / (3.1f - 1.4f);

        if (lacunaridadInitTemp <= 0.25f)
        {
            GUILayout.Label("Muy regular");
        }
        else if (lacunaridadInitTemp <= 0.5f)
        {
            GUILayout.Label("Regular");
        }
        else if (lacunaridadInitTemp <= 0.75f)
        {
            GUILayout.Label("Irregular");
        }
        else
        {
            GUILayout.Label("Muy irregular");
        }

        if (GUILayout.Button(new GUIContent("Buscar", "Busca un planeta con esos parametros."), GUILayout.Height(cuantoH * 1.5f)))
        {
            FuncTablero.setEscala(escalaInit);
            FuncTablero.setGanancia(gananciaInit);
            FuncTablero.setLacunaridad(lacunaridadInit);
            FuncTablero.setOctavas2((int)octavasFloat);
            FuncTablero.reiniciaPerlin();
            StartCoroutine(creacionParte1());
        }

        GUILayout.EndVertical();
        GUILayout.EndArea();
        GUILayout.BeginArea(new Rect(cuantoW * 12, cuantoH * 28, cuantoW * 35, cuantoH * 2));
        GUILayout.BeginHorizontal();
        if (GUILayout.Button(new GUIContent("Volver", "Volver al men\u00fa principal"), GUILayout.Height(cuantoH)))
        {
            faseCreacion = 0;
            estado       = 0;
//			objetoRoca.renderer.enabled = false;
            objetoRoca.animation.Play("HologramaDesaparecer");
            Camera.main.animation.Play("AlejarseHolograma");
        }
        GUILayout.Space(cuantoW * 28);
        string tooltipTemp = "Pasar a la segunda fase";

        if (!paso1Completado)
        {
            tooltipTemp = "Generar un planeta primero";
            GUI.enabled = false;
        }
        if (GUILayout.Button(new GUIContent("Siguiente", tooltipTemp), GUILayout.Height(cuantoH)))
        {
            faseCreacion = 1;
        }
        GUI.enabled = true;

        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }
示例#15
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();
    }
示例#16
0
    private static GameObject getModeloNoSerializableReal(int referencia, Vector3 pos)
    {
        if (modelosAnimales == null || modelosEdificios == null || modelosVegetales == null || objetoRoca == null)
        {
            if (!iniciaVariablesEstaticas())
            {
                Debug.LogError("Error al iniciar variables estaticas. Puede estar en una escena incorrecta?");
                return(null);
            }
        }
        //[Debug] -----------------
//		Vector3 pos = Vector3.zero;
        // ------------------------
        GameObject resultado;

        switch (referencia)
        {
        //Edificios [20-24]
        case 20:                        //Fabrica componentes basicos
            resultado = FuncTablero.creaMesh(pos, modelosEdificios.fabCompBas);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 21:                        //Central de energia
            resultado = FuncTablero.creaMesh(pos, modelosEdificios.centralEnergia);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 22:                        //Granja
            resultado = FuncTablero.creaMesh(pos, modelosEdificios.granja);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 23:                        //Fabrica componentes avanzados
            resultado = FuncTablero.creaMesh(pos, modelosEdificios.fabCompAdv);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 24:                        //Central energia avanzada
            resultado = FuncTablero.creaMesh(pos, modelosEdificios.centralEnergiaAdv);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        //Animales [10-19]
        case 10:                        //Conejo
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.herbivoro1[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 11:                        //Camello
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.herbivoro2[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 12:                        //Tortuga
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.herbivoro3[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 13:                        //Ciervo
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.herbivoro4[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 14:                        //Salamandra
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.herbivoro5[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 15:                        //Zorro
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.carnivoro1[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 16:                        //Lobo
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.carnivoro2[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 17:                        //Serpiente
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.carnivoro3[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 18:                        //Tigre
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.carnivoro4[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 19:                        //Velociraptor
            resultado = FuncTablero.creaMesh(pos, modelosAnimales.carnivoro5[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        //Vegetales [0-9]
        case 0:         //Seta
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.setas[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 1:         //Flor
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.flores[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 2:         //Caña
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.canas[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 3:         //Arbusto
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.arbustos[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 4:         //Estromatolito
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.estromatolitos[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 5:         //Cactus
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.cactus[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 6:         //Palmera
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.palmeras[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 7:         //Pino
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.pinos[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 8:         //Cipres
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.cipreses[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        case 9:         //Pino alto
            resultado = FuncTablero.creaMesh(pos, modelosVegetales.pinosAltos[UnityEngine.Random.Range(0, 4)]);
            resultado.transform.position = objetoRoca.transform.TransformPoint(resultado.transform.position);
            return(resultado);

        default:
            Debug.LogError("La referencia de entrada al metodo getModeloNoSerializableReal(int, Vector3) no es valida! Num = " + referencia.ToString());
            return(GameObject.CreatePrimitive(PrimitiveType.Cube));
        }
    }