コード例 #1
0
    public void iniciarAlgoritmo(Nebulosa nebulosa)
    {
        SistemaPlanetario nodoInicialTemporal = null;

        nebulosaG = nebulosa;
        // buscar el nodo inicial
        foreach (var item in nebulosa.sistemasPlanetarios)
        {
            if (item.inicial)
            {
                nodoInicialTemporal = item;
            }
            if (item.tieneTeletransportador)
            {
                if (nodoInicialTemporal == null)
                {
                    nodoInicialTemporal = item;
                }
                nodoInicial = item;
            }
        }
        List <SistemaPlanetario> camino = new List <SistemaPlanetario>();

        nave = GameObject.FindGameObjectWithTag("Nave").GetComponent <NaveEspacial>();
        double[] materiales = new double[4];
        materiales[0] = nave.iridio;
        materiales[1] = nave.paladio;
        materiales[2] = nave.platino;
        materiales[3] = nave.elementoZero;
        if (nodoInicialTemporal != null)
        {
            buscarCamino(nodoInicialTemporal, 0, nebulosa.grafo, nave.combustible, camino, 0f, nave.sondas, materiales);
        }
    }
コード例 #2
0
    public static SistemaPlanetario PostSistema(SistemaPlanetario sistema)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(ApiCalls.url + "/api/sistemaplanetario");

        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method      = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = JsonUtility.ToJson(sistema);
            //json = json.Replace("\"id\":0,", "");


            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();


            sistema = JsonUtility.FromJson <SistemaPlanetario>(result);
        }
        return(sistema);
    }
コード例 #3
0
    private void buscarOrigen(SistemaPlanetario inicio, double relacionGanancia, List <AristaSistema> grafo, float gasolina, int sondas, float distancia, List <SistemaPlanetario> camino, double[] materiales)
    {
        inicio.visitado = true;
        // recargarGasolinaYsondas(inicio, ref gasolina, ref sondas, ref materiales);
        camino.Add(inicio);


        List <Planeta> planetasTemp = new List <Planeta>();

        planetasTemp = clonarPlanetas(inicio.nodos);
        double[] materialesTemp = clonarMateriales(materiales);

        double rg = calcularRelacionGanancia(inicio, relacionGanancia, distancia, ref sondas, ref materiales);


        if (inicio.id != nodoInicial.id)
        {
            foreach (var item in buscarAdyacentes(inicio, grafo))
            {
                if (!item.visitado)
                {
                    float dis = ((new Vector3(inicio.x, inicio.y, inicio.z)) - (new Vector3(item.x, item.y, item.z))).magnitude;
                    if (!caminoImposible(dis, gasolina))
                    {
                        buscarOrigen(item, rg, grafo, gasolina - (dis / Constantes.GASTO_COMBUSTIBLE), sondas, dis, camino, materiales);
                    }
                }
            }
        }
        else
        {
            double regTemp = rg;
            if (mejorCamino(ref regTemp, gasolina, sondas))
            {
                clonarCamino(camino);
                relacionGananciaGlobal = regTemp;
                gasolinaGlobal         = gasolina;
            }

            //Debug.Log(rg + " RGL");
            //Debug.Log(regTemp + " RGG");
            //Debug.Log(materiales[0] + "-" + materiales[1]);
            //Debug.Log(gasolina + " GASL");
            //Debug.Log(sondas + " sondas");
            //string salida = "";
            //foreach (var item in camino)
            //{
            //    salida += item.nombre + "-";
            //}
            //Debug.Log(salida);
        }


        devolverMateriales(inicio.nodos, planetasTemp, ref materiales);
        devolverMaterialesNave(ref materiales, materialesTemp);
        inicio.visitado = false;
        camino.Remove(inicio);
    }
コード例 #4
0
    private SistemaPlanetario crearsistemaPlanetario()
    {
        SistemaPlanetario sistema = new SistemaPlanetario();

        sistema.nombre = "";
        sistema.x      = Random.Range(-800, 800);
        sistema.y      = 0;
        sistema.z      = Random.Range(-800, 800);
        sistema.nodos  = new List <Planeta>();
        return(sistema);
    }
コード例 #5
0
    /// <summary>
    /// Envía en mensaje DELETE al servidor con  el id de la nebulosa a eliminar.
    /// </summary>
    /// <param name="nebulosa"></param>
    /// <returns></returns>
    public static IEnumerator deleteSistemaCOR(SistemaPlanetario sistema)
    {
        string          accion = "Api/sistemaplanetario/" + sistema.id;
        UnityWebRequest wr     = UnityWebRequest.Delete(ApiCalls.url + accion);

        yield return(wr.SendWebRequest());

        if (wr.isNetworkError || wr.isHttpError)
        {
            Debug.Log("ERROR: " + wr.error);
        }
    }
コード例 #6
0
    public void recalcularAlgorimo(SistemaPlanetario nodoInicial)
    {
        List <SistemaPlanetario> camino = new List <SistemaPlanetario>();

        nave = GameObject.FindGameObjectWithTag("Nave").GetComponent <NaveEspacial>();
        double[] materiales = new double[4];
        materiales[0] = nave.iridio;
        materiales[1] = nave.paladio;
        materiales[2] = nave.platino;
        materiales[3] = nave.elementoZero;
        if (nodoInicial != null)
        {
            buscarCamino(nodoInicial, 0, nebulosaG.grafo, nave.combustible, camino, 0f, nave.sondas, materiales);
        }
    }
コード例 #7
0
    public List <SistemaPlanetario> buscarAdyacentes(SistemaPlanetario sistema, List <AristaSistema> grafo)
    {
        List <SistemaPlanetario> adyacentes = new List <SistemaPlanetario>();

        foreach (var item in grafo)
        {
            if (item.origen.id == sistema.id)
            {
                adyacentes.Add(item.destino);
            }
            if (item.destino.id == sistema.id)
            {
                adyacentes.Add(item.origen);
            }
        }
        return(adyacentes);
    }
コード例 #8
0
    /// <summary>
    /// Calcula la relacion ganancia real que se puede obtener con un numero de sondas determinado teniendo en cuenta la gasolina que gasta
    /// SE SIMULA QUE SE ESTAN RESTANDO MATERIALES
    /// </summary>
    /// <param name="sistema"></param>
    /// <returns></returns>
    public double calcularRelacionGanancia(SistemaPlanetario inicio, double relacionGanancia, float distancia, ref int sondas, ref double[] materiales)
    {
        double iridio       = 0;
        double paladio      = 0;
        double platino      = 0;
        double elementoZero = 0;

        foreach (var item in inicio.recorrido.caminoGlobal)
        {
            if (sondas >= 2 && GastoSondas.valeLaPenaGastarSondas(item))
            {
                iridio       += item.iridio;
                paladio      += item.paladio;
                platino      += item.platino;
                elementoZero += item.elementoZero;

                //La nave quedo con los materiales del planeta
                materiales[0] += item.iridio;
                materiales[1] += item.paladio;
                materiales[2] += item.platino;
                materiales[3] += item.elementoZero;
                sondas        -= 2;

                ///El plantera quedó sin materiales
                item.iridio       = 0;
                item.paladio      = 0;
                item.platino      = 0;
                item.elementoZero = 0;


                ///Limita materiales
                materiales[0] = Mathf.Clamp((float)materiales[0], 0, Constantes.LIMITE_IRIDIO);
                materiales[1] = Mathf.Clamp((float)materiales[1], 0, Constantes.LIMITE_PALADIO);
                materiales[2] = Mathf.Clamp((float)materiales[2], 0, Constantes.LIMITE_PLATINO);
                materiales[3] = Mathf.Clamp((float)materiales[3], 0, Constantes.LIMITE_ELEMENTOZERO);
            }
        }

        iridio       = (iridio * Constantes.IRIDIO_VALOR - (Constantes.IRIDIO_VC * Constantes.IRIDIO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE)));
        paladio      = (paladio * Constantes.PALADIO_VALOR - (Constantes.PALADIO_VC * Constantes.PALADIO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE)));
        platino      = (platino * Constantes.PLATINO_VALOR - (Constantes.PLATINO_VC * Constantes.PLATINO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE)));
        elementoZero = (elementoZero * Constantes.ELEMENTO_ZERO_VALOR - (Constantes.ELEMENTO_ZERO_VC * Constantes.ELEMENTO_ZERO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE)));

        return((iridio + paladio + platino + elementoZero) + relacionGanancia);
    }
コード例 #9
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="inicio"></param>
    /// <param name="relacionGanancia"></param>
    /// <param name="grafo"></param>
    /// <param name="gasolina">La gasolina que riene la nave al comenzar el método</param>
    /// <param name="camino"></param>
    /// <param name="distancia"></param>
    private void buscarCamino(SistemaPlanetario inicio, double relacionGanancia, List <AristaSistema> grafo, float gasolina, List <SistemaPlanetario> camino, float distancia, int sondas, double[] materiales)
    {
        inicio.visitado = true;

        RecargarCombustible rc = new RecargarCombustible();

        List <Planeta> planetasTemp = new List <Planeta>();

        planetasTemp = clonarPlanetas(inicio.nodos);
        double[] materialesTemp = clonarMateriales(materiales);

        double rg = relacionGanancia;

        rc.recargarGasolinaYsondas(inicio, ref gasolina, ref sondas, ref materiales, ref rg);
        camino.Add(inicio);



        //int sondasTemp = inicio.recorrido.sondasGlobal;
        rg = calcularRelacionGanancia(inicio, rg, distancia, ref sondas, ref materiales);

        foreach (var item in buscarAdyacentes(inicio, grafo))
        {
            if (!item.visitado)
            {
                float dis = ((new Vector3(inicio.x, inicio.y, inicio.z)) - (new Vector3(item.x, item.y, item.z))).magnitude;
                if (!caminoImposible(dis, gasolina))
                {
                    buscarCamino(item, rg, grafo, gasolina - (dis / Constantes.GASTO_COMBUSTIBLE), camino, dis, sondas, materiales);
                }
            }
        }
        SistemaPlanetario    inicioAux      = inicio;
        List <AristaSistema> grafoDuplicado = clonarGrafo(grafo, ref inicioAux);

        inicio.visitado = false;
        camino.Remove(inicio);



        buscarOrigen(inicioAux, rg, grafoDuplicado, gasolina, sondas, 0, camino, materiales);
        devolverMateriales(inicio.nodos, planetasTemp, ref materiales);
        devolverMaterialesNave(ref materiales, materialesTemp);
    }
コード例 #10
0
    IEnumerator getSistemas()
    {
        string          accion = "Api/SistemaPlanetario/" + sistemaPlanetario.id;
        UnityWebRequest wr     = UnityWebRequest.Get(ApiCalls.url + accion);

        yield return(wr.SendWebRequest());

        if (wr.isNetworkError || wr.isHttpError)
        {
            Debug.Log("ERROR: " + wr.error);
        }
        else
        {
            string            json     = wr.downloadHandler.text;
            SistemaPlanetario nebulosa = JsonUtility.FromJson <SistemaPlanetario>(json);
            TextMeshProUGUI   nombre   = infoSistema.transform.Find("Nombre").GetComponent <TextMeshProUGUI>();
            nombre.text = nebulosa.nombre;
        }
    }
コード例 #11
0
    /// <summary>
    /// La nave recarga gasolina y compra sondas
    /// </summary>
    /// <param name="inicio"></param>
    public void recargarGasolinaYsondas(SistemaPlanetario inicio, ref float gasolina, ref int sondas, ref double[] materiales, ref double rg)
    {
        if (inicio.tieneDeposito)
        {
            float gasolinaPorcentaje = gasolina / Constantes.LIMITE_COMBUSTIBLE;
            float sondasPorcentaje   = sondas / Constantes.CAPACIDAD_SONDAS;


            if (gasolinaPorcentaje < sondasPorcentaje)
            {
                while (((gasolinaPorcentaje < sondasPorcentaje) && puedeComprarCombustible(materiales)) && gasolinaPorcentaje * 100 < 99)
                {
                    gasolina += comprarCombustible(ref materiales, ref rg);

                    gasolinaPorcentaje = gasolina / Constantes.LIMITE_COMBUSTIBLE;
                }
            }
            if (sondasPorcentaje < gasolinaPorcentaje)
            {
                while (((sondasPorcentaje < gasolinaPorcentaje) && puedeComprarSondas(materiales)) && sondasPorcentaje * 100 < 99)
                {
                    sondas += comprarSondas(ref materiales, ref rg);

                    sondasPorcentaje = sondas / Constantes.CAPACIDAD_SONDAS;
                }
            }
            while ((puedeComprarCombustible(materiales) && gasolinaPorcentaje * 100 < 99) || (puedeComprarSondas(materiales) && sondasPorcentaje * 100 < 99))
            {
                if (puedeComprarCombustible(materiales) && gasolinaPorcentaje * 100 < 99)
                {
                    gasolina          += comprarCombustible(ref materiales, ref rg);
                    gasolinaPorcentaje = gasolina / Constantes.LIMITE_COMBUSTIBLE;
                }
                if (puedeComprarSondas(materiales) && sondasPorcentaje * 100 < 99)
                {
                    sondas          += comprarSondas(ref materiales, ref rg);
                    sondasPorcentaje = sondas / Constantes.CAPACIDAD_SONDAS;
                }
            }
        }
    }
コード例 #12
0
 /// <summary>
 /// Esta corrutina envia esta atenta cuando se selecciona una nebulosa ,cuando lo hace la elimina llamando a la corrutina deleteNebulosa
 /// </summary>
 /// <returns></returns>
 IEnumerator eliminarSistemaCOR()
 {
     while (eliminar)
     {
         // This would cast rays only against colliders in layer 8.
         // But instead we want to collide against everything except layer 8. The ~ operator does this, it inverts a bitmask.
         if (Input.GetMouseButtonDown(0))
         {
             RaycastHit hit;
             Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             // Does the ray intersect any objects excluding the player layer
             if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerDelete))
             {
                 SistemaPlanetario sistema = hit.transform.gameObject.GetComponent <SistemaplanetarioPrefab>().sistemaPlanetario;
                 StartCoroutine(deleteSistemaCOR(sistema));
                 Destroy(hit.transform.gameObject);
             }
         }
         yield return(null);
     }
 }
コード例 #13
0
    void Start()
    {
        SistemaPlanetario sp = SistemaPlanetarioService.GetSistemaPlanetario(123);

        foreach (var nodo in sp.nodos)
        {
            foreach (var item in sp.grafo)
            {
                if (item.origenFK == nodo.id)
                {
                    item.origen = nodo;
                }
                if (item.destinoFK == nodo.id)
                {
                    item.destino = nodo;
                }
            }
        }


        rp.buscarNodoInicial(sp.nodos, sp.grafo);
    }
コード例 #14
0
    /// <summary>
    /// este métoto duplica un grafo y desmarca los nodos como no visitados.
    /// </summary>
    /// <returns></returns>
    public List <AristaSistema> clonarGrafo(List <AristaSistema> grafo, ref SistemaPlanetario inicioAux)
    {
        List <AristaSistema> grafoCopia = new List <AristaSistema>();

        List <SistemaPlanetario> sistemasAux = new List <SistemaPlanetario>();


        foreach (var item in grafo)
        {
            AristaSistema arCopia = new AristaSistema();
            bool          origen  = false;
            bool          destino = false;
            foreach (var sistema in sistemasAux)
            {
                if (item.origen.id == sistema.id)
                {
                    arCopia.origen = sistema;
                    origen         = true;
                }
                if (item.destino.id == sistema.id)
                {
                    arCopia.destino = sistema;
                    destino         = true;
                }
            }
            if (!origen)
            {
                SistemaPlanetario orCopia = new SistemaPlanetario();
                orCopia.tieneDeposito = item.origen.tieneDeposito;
                orCopia.recorrido     = item.origen.recorrido;
                orCopia.nombre        = item.origen.nombre;
                orCopia.x             = item.origen.x;
                orCopia.y             = item.origen.y;
                orCopia.z             = item.origen.z;
                orCopia.id            = item.origen.id;
                orCopia.nodos         = item.origen.nodos;
                sistemasAux.Add(orCopia);
                arCopia.origen = orCopia;
            }
            if (!destino)
            {
                SistemaPlanetario desCopia = new SistemaPlanetario();
                desCopia.tieneDeposito = item.destino.tieneDeposito;
                desCopia.recorrido     = item.destino.recorrido;
                desCopia.nombre        = item.destino.nombre;
                desCopia.x             = item.destino.x;
                desCopia.y             = item.destino.y;
                desCopia.z             = item.destino.z;
                desCopia.id            = item.destino.id;
                desCopia.nodos         = item.destino.nodos;
                arCopia.destino        = desCopia;
            }



            if (item.origen.id == inicioAux.id)
            {
                inicioAux = arCopia.origen;
            }
            if (item.destino.id == inicioAux.id)
            {
                inicioAux = arCopia.destino;;
            }

            grafoCopia.Add(arCopia);
        }

        return(grafoCopia);
    }
コード例 #15
0
 public void setSistema(SistemaPlanetario _sistema)
 {
     sistemaPlanetario = _sistema;
 }
コード例 #16
0
    public IEnumerator sistemaDeNavegacion(List <SistemaPlanetario> MejorCamino)
    {
        transform.position = new Vector3(MejorCamino[0].x, 0, MejorCamino[0].z);

        lineaPaso.SetPosition(0, new Vector3(MejorCamino[0].x, 0.1f, MejorCamino[0].z));
        int i = 0;

        int               contadorFinal  = 0; //contador para saber si llego a
        Vector3           posInicial     = new Vector3(MejorCamino[0].x, 0, MejorCamino[0].x);
        SistemaPlanetario sistemaInicial = MejorCamino[0];

        foreach (var sistema in MejorCamino)
        {
            if (sistema == sistemaInicial && i != 0)
            {
                break;
            }


            float distancia = (posInicial - new Vector3(sistema.x, 0, sistema.z)).magnitude;
            posInicial = new Vector3(sistema.x, 0, sistema.z);
            if (combustible < (distancia / Constantes.GASTO_COMBUSTIBLE))
            {
                gameOver = true;

                Debug.Log("Todo Esta Perdido");
                Time.timeScale = 0;
                break;
            }

            contadorFinal++;

            lineaPaso.positionCount = i + 1;

            navegacionSistema();


            GameObject circulo = new GameObject();
            circulo.transform.position   = new Vector3(sistema.x, 0, sistema.z);
            circulo.transform.localScale = new Vector3(20, 20, 20);
            GameObject sistemaTemp = new GameObject();
            sistemaTemp.transform.parent        = circulo.transform;
            sistemaTemp.transform.localPosition = new Vector3(0, -2, 0);
            sistemaTemp.transform.localScale    = new Vector3(0.5f, 0.5f, 0.5f);

            Vector3 target = new Vector3(sistema.x, 0, sistema.z);


            float combustibleTemp     = ((transform.position - target).magnitude) * Constantes.GASTO_COMBUSTIBLE;
            float combustubleRestante = combustible - ((transform.position - target).magnitude) * Constantes.GASTO_COMBUSTIBLE;

            float gastoGasolina = 0;
            int   entra         = 0;
            while ((transform.position - target).magnitude != 0)
            {
                lineaPaso.SetPosition(i, new Vector3(transform.position.x, 0.1f, transform.position.z));
                if (entra <= 1)
                {
                    entra++;

                    gastoGasolina = combustibleTemp * Constantes.GASTO_COMBUSTIBLE - (((transform.position - target).magnitude) * Constantes.GASTO_COMBUSTIBLE);
                }
                combustible -= gastoGasolina;

                float step = velocidadSistemas * Time.deltaTime;
                transform.position = Vector3.MoveTowards(transform.position, target, step);

                Vector3 targetDir = target - transform.position;


                Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0f);
                Debug.DrawRay(transform.position, newDir, Color.red);
                // Move our position a step closer to the target.
                transform.rotation = Quaternion.LookRotation(newDir);

                Vector3 posicion = transform.position + offsetSistema;
                Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, posicion, 0.1f);

                yield return(null);
            }
            i++;//esta es para las lineas
            combustible = combustubleRestante;

            #region RecargarCombustible
            ///Recarga combustible si es posible
            RecargarCombustible rc         = new RecargarCombustible();
            double[]            materiales = new double[4];
            materiales[0] = iridio;
            materiales[1] = paladio;
            materiales[2] = platino;
            materiales[3] = elementoZero;

            double rg = 0;
            rc.recargarGasolinaYsondas(sistema, ref combustible, ref sondas, ref materiales, ref rg);

            iridio       = (float)materiales[0];
            paladio      = (float)materiales[1];
            platino      = (float)materiales[2];
            elementoZero = (float)materiales[3];


            #endregion RecargarCombustible


            GameObject planetaTemp = new GameObject();
            planetaTemp.transform.parent = sistemaTemp.transform;

            if (sistema.recorrido.caminoGlobal.Count > 0)
            {
                planetaTemp.transform.localPosition = new Vector3(sistema.recorrido.caminoGlobal[0].x, 0, sistema.recorrido.caminoGlobal[0].z);
                transform.position = planetaTemp.transform.position;
            }



            foreach (var planeta in sistema.recorrido.caminoGlobal)
            {
                navegacionPlanetas();
                planetaTemp.transform.localPosition = (new Vector3(planeta.x, 0, planeta.z));

                target = planetaTemp.transform.position;

                Vector3 posicion = transform.position + offsetPlanetas;
                Camera.main.transform.position = posicion;

                while ((transform.position - target).magnitude >= 0.1f)
                {
                    float step = velocidadplanetas * Time.deltaTime;
                    transform.position = Vector3.MoveTowards(transform.position, target, step);

                    Vector3 targetDir = target - transform.position;


                    Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0f);
                    Debug.DrawRay(transform.position, newDir, Color.red);
                    // Move our position a step closer to the target.
                    transform.rotation = Quaternion.LookRotation(newDir);

                    posicion = transform.position + offsetPlanetas;
                    Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, posicion, 0.1f);;

                    yield return(null);
                }


                #region EntrarAPlaneta


                Vector3 posiciont = new Vector3(-7, 0, 0);
                Vector3 rotacion  = new Vector3(0, 90, 0);
                Vector3 escala    = new Vector3(0.1f, 0.1f, 0.1f);

                transform.position   += posiciont;
                transform.eulerAngles = rotacion;
                transform.localScale -= escala;


                Vector3 offsetExtraccion = new Vector3(5f, 19, 22);
                // Camera.main.transform.position -= offsetExtraccion;



                if (sondas >= 2 && GastoSondas.valeLaPenaGastarSondas(planeta))
                {
                    Vector3 Posfinal1 = Camera.main.transform.position - offsetExtraccion;

                    while ((Posfinal1 - Camera.main.transform.position).magnitude != 0)
                    {
                        Camera.main.transform.position = Vector3.MoveTowards(Camera.main.transform.position, Posfinal1, 1f);
                        yield return(null);
                    }
                    sondas -= 2;
                    double iridioTemp       = planeta.iridio / tiempoExtraccion;
                    double paladioTemp      = planeta.paladio / tiempoExtraccion;
                    double platinoTemp      = planeta.platino / tiempoExtraccion;
                    double elementoZeroTemp = planeta.elementoZero / tiempoExtraccion;


                    inPlaneta = true;
                    int contador = 0;
                    nombrePlanetaTemp = planeta.nombre;

                    ///Extraer materiales
                    while (contador < tiempoExtraccion)
                    {
                        if (escapar)
                        {
                            escapar = false;
                            break;
                        }

                        contador++;
                        iridio       += (float)iridioTemp;
                        paladio      += (float)paladioTemp;
                        platino      += (float)platinoTemp;
                        elementoZero += (float)elementoZeroTemp;

                        planeta.iridio       -= iridioTemp;
                        planeta.paladio      -= paladioTemp;
                        planeta.platino      -= platinoTemp;
                        planeta.elementoZero -= elementoZeroTemp;

                        iridioPlanetaTemp       = (float)planeta.iridio;
                        paladioPlanetaTemp      = (float)planeta.paladio;
                        platinoPlanetaTemp      = (float)planeta.platino;
                        elementoZeroPlanetaTemp = (float)planeta.elementoZero;

                        iridioPlanetaTemp       = Mathf.Clamp(iridioPlanetaTemp, 0, Mathf.Infinity);
                        platinoPlanetaTemp      = Mathf.Clamp(platinoPlanetaTemp, 0, Mathf.Infinity);
                        paladioPlanetaTemp      = Mathf.Clamp(paladioPlanetaTemp, 0, Mathf.Infinity);
                        elementoZeroPlanetaTemp = Mathf.Clamp(elementoZeroPlanetaTemp, 0, Mathf.Infinity);

                        yield return(new WaitForSeconds(1f));
                    }
                }

                inPlaneta             = false;
                transform.position   -= posiciont;
                transform.eulerAngles = Vector3.zero;
                transform.localScale += escala;


                Vector3 Posfinal = Camera.main.transform.position + offsetExtraccion;

                while ((Posfinal - Camera.main.transform.position).magnitude != 0)
                {
                    Camera.main.transform.position = Vector3.MoveTowards(Camera.main.transform.position, Posfinal, 1f);
                    yield return(null);
                }
                #endregion EntrarAPlaneta
            }
        }

        GameObject.FindGameObjectWithTag("Teletransportar").GetComponent <Teletransportar>().iniciarAnimacion();
        yield return(new WaitForSeconds(2.1f));

        LevelLoader levelLoader = GameObject.FindGameObjectWithTag("LevelLoader").GetComponent <LevelLoader>();
        levelLoader.loadLevel("ViaLactea");
    }
コード例 #17
0
    public void nuevaViaLactea()
    {
        //TMP_InputField totalNebulosas=canvasMenuCrear.transform.Find("Canvas/Nebulosas/Total").GetComponent<TMP_InputField>();
        //TMP_InputField totalSistemasPlanetarios=canvasMenuCrear.transform.Find("Canvas/SistemasPlanetarios/Total").GetComponent<TMP_InputField>();
        //TMP_InputField totalSistemasPlanetas= canvasMenuCrear.transform.Find("Canvas/Planetas/Total").GetComponent<TMP_InputField>();

        Slider maxNebulosas           = canvasMenuCrear.transform.Find("Canvas/Nebulosas/Slider").GetComponent <Slider>();
        Slider maxSistemasPlanetarios = canvasMenuCrear.transform.Find("Canvas/SistemasPlanetarios/Slider").GetComponent <Slider>();
        Slider maxPlanetas            = canvasMenuCrear.transform.Find("Canvas/Planetas/Slider").GetComponent <Slider>();

        Toggle         random          = canvasMenuCrear.transform.Find("Canvas/Info/Toggle").GetComponent <Toggle>();
        TMP_InputField nombreViaLactea = canvasMenuCrear.transform.Find("Canvas/Info/Nombre").GetComponent <TMP_InputField>();


        ViaLactea viaLactea = new ViaLactea();

        viaLactea.nombre    = nombreViaLactea.text;
        viaLactea.Nebulosas = new List <Nebulosa>();



        if (random.isOn)
        {
            int nebulosas = Random.Range((int)maxNebulosas.minValue, (int)maxNebulosas.value);
            for (int i = 0; i < nebulosas; i++)
            {
                Nebulosa nebulosaTemp = crearNebulosa();
                viaLactea.Nebulosas.Add(nebulosaTemp);
                int sistemas = Random.Range((int)maxSistemasPlanetarios.minValue, (int)maxSistemasPlanetarios.value);
                for (int j = 0; j < sistemas; j++)
                {
                    SistemaPlanetario sistemaTemp = crearsistemaPlanetario();
                    viaLactea.Nebulosas[i].sistemasPlanetarios.Add(sistemaTemp);
                    for (int k = 0; k < (int)maxPlanetas.value; k++)
                    {
                        Planeta planeta = crearPlaneta();
                        viaLactea.Nebulosas[i].sistemasPlanetarios[j].nodos.Add(planeta);
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < (int)maxNebulosas.value; i++)
            {
                Nebulosa nebulosa = crearNebulosa();
                viaLactea.Nebulosas.Add(nebulosa);
                for (int j = 0; j < (int)maxSistemasPlanetarios.value; j++)
                {
                    SistemaPlanetario sistema = crearsistemaPlanetario();
                    viaLactea.Nebulosas[i].sistemasPlanetarios.Add(sistema);

                    for (int k = 0; k < (int)maxPlanetas.value; k++)
                    {
                        Planeta planeta = crearPlaneta();
                        viaLactea.Nebulosas[i].sistemasPlanetarios[j].nodos.Add(planeta);
                    }
                }
            }
        }


        viaLactea = ViaLacteaService.PostViaLactea(viaLactea);
        CargarViaLactea cargar = GameObject.FindGameObjectWithTag("ViaLactea").GetComponent <CargarViaLactea>();

        cargar.setViaLactea(viaLactea);

        StartCoroutine(CameraAnimations.animacionSalirMenuCrear("Editor"));

        StartCoroutine(irAEditor());
    }