Exemple #1
0
    public void MostrarInformacionReactivo(MaterialReactivo reactivo)
    {
        MostrarReactivo(true);

        TextoNombreReactivo.text   = reactivo.NombreReactivo;
        TextoCantidadReactivo.text = reactivo.CantidadFormateada;
    }
    // Esta es una corutina
    IEnumerator CorutinaReaccionQuimica(float tiempoReaccion)
    {
        yield return(new WaitForSeconds(tiempoReaccion));

        EstadoSeleccion    = EnumSeleccion.Nada;
        ReactivoEnReaccion = null;
    }
Exemple #3
0
    public bool SobreReactivo(MaterialReactivo reactivo)
    {
        if (Agarrado == null)
        {
            return(false);
        }

        bool esCuchara = Agarrado.GetComponent <MaterialAgarrableCuchara>() != null;
        bool esPapel   = Agarrado.GetComponent <MaterialAgarrablePapel>() != null;

        bool esTubo    = reactivo is TuboClorato;
        bool esClorato = reactivo is MaterialReactivoCloratoEnPolvo;

        if (esCuchara && esClorato)
        {
            return(true);
        }

        if (esCuchara && Agarrado.GetComponent <MaterialAgarrableCuchara>().Cantidad > 0 && esTubo)
        {
            return(true);
        }

        if (esPapel && Tubo.Cantidad > 0 && Tubo.Disuelto)
        {
            return(true);
        }

        return(false);
    }
Exemple #4
0
    public void DesmarcarTodosReactivos()
    {
        for (int i = 0; i < Reactivos.Count; i++)
        {
            Reactivos[i].Desmarcar();
        }

        ReactivoPosible = null;
    }
    public void DesmarcarTodosReactivos()
    {
        for (int i = 0; i < Reactivos.Count; i++)
        {
            Reactivos[i].Desmarcar();
        }

        ReactivoPosible = null;

        uiExperimentos.MostrarReactivo(false);
    }
Exemple #6
0
    public bool MarcarReactivo(MaterialReactivo reactivo)
    {
        if (reactivo.Usado == false)
        {
            ReactivoPosible = reactivo;
            EstadoSeleccion = EnumSeleccion.MarcandoReactivo;
            reactivo.Marcar();


            return(true);
        }

        return(false);
    }
    public bool MarcarReactivo(MaterialReactivo reactivo)
    {
        if (reactivo.Usado == false)
        {
            ReactivoPosible = reactivo;
            EstadoSeleccion = EnumSeleccion.MarcandoReactivo;
            reactivo.Marcar();

            uiExperimentos.MostrarInformacionReactivo(reactivo);

            return(true);
        }

        return(false);
    }
Exemple #8
0
    public void ActualizarDatosReactivo(MaterialReactivo reactivo, float tiempo)
    {
        TextoTiempoReaccion.transform.parent.gameObject.SetActive(true);
        TextoAzufreRestante.transform.parent.gameObject.SetActive(true);
        TextoCantidadAcidoRestante.transform.parent.gameObject.SetActive(true);
        TextoTiempoReaccion.text = FormatearTiempo(tiempo);

        ReactivoAcidoClorhidrico acido = (ReactivoAcidoClorhidrico)reactivo;

        float acidoRestante  = acido.CalcularAcidoRestante(tiempo);
        float azufreRestante = acido.CalcularAzufreRestante(tiempo);

        string acidoFormateado  = MaterialReactivo.FormatearCantidad(acidoRestante, MaterialReactivo.UnidadMedida.ml);
        string azufreFormateado = MaterialReactivo.FormatearCantidad(azufreRestante, MaterialReactivo.UnidadMedida.gr);

        TextoCantidadAcidoRestante.text = acidoFormateado;
        TextoAzufreRestante.text        = azufreFormateado;
    }
Exemple #9
0
    public void Soltar()
    {
        if (Agarrado == null)
        {
            return;
        }

        Agarrado.GetComponent <MaterialAgarrableEsfera>().Soltar();
        Agarrado = null;

        if (EstadoSeleccion == EnumSeleccion.MarcandoReactivo)
        {
            ReactivoPosible.Desmarcar();
            ReactivoPosible = null;
        }

        EstadoSeleccion = EnumSeleccion.Nada;
    }
    void Awake()
    {
        GameObject ui = GameObject.FindGameObjectWithTag("UIPanelMaterial");

        if (ui != null)
        {
            uiPanelMaterial = ui.GetComponent <UIPanelMaterial>();
            ui.SetActive(false);
        }


        ui = GameObject.FindGameObjectWithTag("UIExperimentos");
        if (ui != null)
        {
            uiExperimentos = ui.GetComponent <UIExperimentos>();
            ui.SetActive(true);
        }


        EstadoSeleccion = EnumSeleccion.Nada;

        // Materiales normales
        objetos = new List <GameObject>();
        GameObject [] materiales = GameObject.FindGameObjectsWithTag("Material");
        for (int i = 0; i < materiales.Length; i++)
        {
            objetos.Add(materiales[i]);
        }

        // Materiales Reactivos
        GameObject[] rs = GameObject.FindGameObjectsWithTag("MaterialReactivo");
        Reactivos = new List <MaterialReactivo>();
        for (int i = 0; i < rs.Length; i++)
        {
            MaterialReactivo m = rs[i].GetComponent <MaterialReactivo>();
            Reactivos.Add(m);

            ReactivoAcidoClorhidrico ac = m as ReactivoAcidoClorhidrico;
            if (ac != null)
            {
                acido = ac;
            }
        }
    }
    public void Soltar()
    {
        if (Agarrado == null)
        {
            return;
        }

        Agarrado.GetComponent <MaterialAgarrableZinc>().Soltar();
        Agarrado = null;

        if (EstadoSeleccion == EnumSeleccion.MarcandoReactivo)
        {
            ReactivoPosible.Desmarcar();
            ReactivoPosible = null;
        }

        EstadoSeleccion = EnumSeleccion.Nada;

        uiExperimentos.MostrarAgarrable(false);
    }
    public void ReaccionQuimica()
    {
        EstadoSeleccion = EnumSeleccion.Reaccionando;

        MaterialReactivo reactivo = ReactivoPosible;

        reactivo.ReaccionQuimica();
        Reactivos.Remove(reactivo);

        StartCoroutine(CorutinaReaccionQuimica(ReactivoPosible.TiempoReaccion));

        ReactivoEnReaccion = ReactivoPosible;
        ReactivoPosible    = null;

        Destroy(Agarrado);
        Agarrado = null;



        tiempoReaccionTranscurrido = 0f;
    }
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        PosicionAgarre = Camera.main.transform.position + ray.direction * DistanciaAgarre;

        RaycastHit[] hits = Physics.RaycastAll(ray);

        bool encontrado = false;

        if (gc.EstadoSeleccion == ExperimentoDensidad.EnumSeleccion.Agarrado && Input.GetMouseButtonDown(1))
        {
            gc.Soltar();
            return;
        }

        for (int i = 0; i < hits.Length; i++)
        {
            RaycastHit hit = hits[i];

            GameObject g = hit.collider.gameObject;

            if (gc.EstadoSeleccion == ExperimentoDensidad.EnumSeleccion.Nada)
            {
                if (hit.collider.tag == "MaterialAgarrable")
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        MaterialAgarrableEsfera m = hit.collider.GetComponent <MaterialAgarrableEsfera>();
                        gc.Agarrar(m);
                    }
                }
            }
            else if (gc.EstadoSeleccion == ExperimentoDensidad.EnumSeleccion.Agarrado)
            {
                gc.DesmarcarTodosReactivos();

                if (Input.GetMouseButtonDown(1))
                {
                    gc.Soltar();
                }

                if (hit.collider.tag == "MaterialReactivo")
                {
                    MaterialReactivo react = hit.collider.GetComponent <MaterialReactivo>();
                    if (gc.MarcarReactivo(react))
                    {
                        encontrado = true;
                    }
                }
            }
            else if (gc.EstadoSeleccion == ExperimentoDensidad.EnumSeleccion.MarcandoReactivo)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    MaterialAgarrableEsfera esfera = gc.Agarrado.GetComponent <MaterialAgarrableEsfera>();
                    VasodeAguaDensidad      agua   = hit.collider.GetComponent <VasodeAguaDensidad>();
                    gc.Accion(hit.collider.gameObject);
                    esfera.TransformConexion = agua.PosicionAgua();
                }
                if (Input.GetMouseButtonDown(1))
                {
                    gc.Soltar();
                }

                if (hit.collider.tag == "MaterialReactivo")
                {
                    encontrado = true;
                }
            }
            else if (gc.EstadoSeleccion == ExperimentoDensidad.EnumSeleccion.Reaccionando)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    MaterialAgarrableEsfera esfera = gc.Agarrado.GetComponent <MaterialAgarrableEsfera>();
                    VasodeAguaDensidad      agua   = hit.collider.GetComponent <VasodeAguaDensidad>();
                    gc.DisminuirLiquido(hit.collider.gameObject);
                    gc.Agarrar(esfera);
                }
            }
        } // for


        if (gc.EstadoSeleccion == ExperimentoDensidad.EnumSeleccion.MarcandoReactivo)
        {
            if (encontrado == false)
            {
                gc.VolverEstadoAgarrado();
            }
        }
    }
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        PosicionAgarre = Camera.main.transform.position + ray.direction * DistanciaAgarre;

        RaycastHit[] hits = Physics.RaycastAll(ray);

        bool encontrado = false;

        for (int i = 0; i < hits.Length; i++)
        {
            RaycastHit hit = hits[i];

            GameObject g = hit.collider.gameObject;

            if (gc.EstadoSeleccion == ExperimentoOxidacion.EnumSeleccion.Nada)
            {
                if (hit.collider.tag == "MaterialAgarrable")
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        MaterialAgarrableZinc m = hit.collider.GetComponent <MaterialAgarrableZinc>();
                        gc.Agarrar(m);
                    }
                }
            }
            else if (gc.EstadoSeleccion == ExperimentoOxidacion.EnumSeleccion.Agarrado)
            {
                gc.DesmarcarTodosReactivos();

                if (Input.GetMouseButtonDown(1))
                {
                    gc.Soltar();
                }

                if (hit.collider.tag == "MaterialReactivo")
                {
                    MaterialReactivo react = hit.collider.GetComponent <MaterialReactivo>();
                    if (gc.MarcarReactivo(react))
                    {
                        encontrado = true;
                    }
                }
            }
            else if (gc.EstadoSeleccion == ExperimentoOxidacion.EnumSeleccion.MarcandoReactivo)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    gc.ReaccionQuimica();
                }
                if (Input.GetMouseButtonDown(1))
                {
                    gc.Soltar();
                }

                if (hit.collider.tag == "MaterialReactivo")
                {
                    encontrado = true;
                }
            }
        } // for


        if (gc.EstadoSeleccion == ExperimentoOxidacion.EnumSeleccion.MarcandoReactivo)
        {
            if (encontrado == false)
            {
                gc.VolverEstadoAgarrado();
            }
        }
    }
 public void VolverEstadoAgarrado()
 {
     EstadoSeleccion = EnumSeleccion.Agarrado;
     ReactivoPosible.Desmarcar();
     ReactivoPosible = null;
 }