コード例 #1
0
ファイル: DBManager.cs プロジェクト: mgallo2019/SIAMM
    //trae un elemento DE LA TABLA PERIODICA A PARTIR DEL NRO, para los BOTONES
    public ElementTabPer GetElementFromNro(int nro)
    {
        ElementTabPer elementTabPer = new ElementTabPer();

        using (IDbConnection dbConnection = new SqliteConnection(connectionString))
        {
            dbConnection.Open();

            using (IDbCommand command = dbConnection.CreateCommand())
            {
                //tener en cuenta los null sino tirara error de cast luego en el read del set
                string sqlQuery = "SELECT simbolo, peso_atomico, CASE WHEN configuracion_electronica_abreviada " +
                                  "IS NULL THEN 'n/a' ELSE configuracion_electronica_abreviada END, nombre, clasificacion_grupo " +
                                  "FROM elementos_info_basica WHERE numero_atomico="
                                  + nro + ";";

                command.CommandText = sqlQuery;
                using (IDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        elementTabPer.Nroatomico         = nro;
                        elementTabPer.Simbol             = reader.GetString(0);
                        elementTabPer.PesoAtomico        = reader.GetFloat(1);
                        elementTabPer.ConfElectronica    = reader.GetString(2);
                        elementTabPer.Name               = reader.GetString(3);
                        elementTabPer.ClasificacionGrupo = reader.GetString(4);
                    }
                    dbConnection.Close();
                    reader.Close();
                }
            }
        }
        return(elementTabPer);
    }
コード例 #2
0
    /*Metodo para el seteo de los objetos TEXT de cada boton de la tabla periodica*/
    private void LoadData(Button elem)
    {
        ElementTabPer element = new ElementTabPer();

        //obtiene datos del elemento según cantidad de protones
        element = DBManager.GetElementFromNro(getNroAtomicoId(elem));

        //obtengo la lista de objetos o coleccion de objetos de tipo TEXT que estan en los botones
        Text[] textosObj = elem.GetComponentsInChildren <Text>();

        //recorro todos los game object que contiene el boton, se podria hacer por orden de objetos, como estan creados en el boton
        for (int j = 0; j < textosObj.Length; j++)
        {
            if (textosObj[j].name == "txtDistElect")
            {
                textosObj[j].text = element.ConfElectronica;
            }
            if (textosObj[j].name == "txtPeso")
            {
                textosObj[j].text = Convert.ToString(element.PesoAtomico);
            }
            if (textosObj[j].name == "txtNombre")
            {
                textosObj[j].text = element.Simbol;
            }
        }
    }
コード例 #3
0
 private void SetButtonTexts(ElementTabPer element)
 {
     Text[] texts = elementBtn.GetComponentsInChildren <Text>();
     texts[0].text = element.Simbol;
     texts[1].text = Convert.ToString(element.Nroatomico);
     texts[2].text = Convert.ToString(element.PesoAtomico);
     texts[3].text = element.ConfElectronica;
 }
コード例 #4
0
 private void SetElementColor(ElementTabPer element)
 {
     if (element.Nroatomico != 0)
     {
         //obtengo el material según la clasif
         elementBtn.GetComponent <Image>().color = GetMaterialIndexFromDictionary(element.ClasificacionGrupo);
         FillSuggestions(element.Nroatomico);
     }
 }
コード例 #5
0
    public void SetInfo(Atom atom)
    {
        ElementTabPer  element = new ElementTabPer();
        IsotopoAllData isotopo = new IsotopoAllData();

        if (atom.TypeAtom == TypeAtomEnum.atom)
        {
            element = qryElement.GetElementFromNro(atom.ElementNumber);

            if (element != null && element.Nroatomico != 0)
            {
                ActivatePanelsAtoms();

                nameLbl.text = element.Name;
                SetElementColor(element);
                SetButtonTexts(element);
                //carga los datos especiales del elemento
                SetInfoElementSelected(atom.ElementNumber);
            }
        }

        else if (atom.TypeAtom == TypeAtomEnum.isotopo)
        {
            element = qryElement.GetElementFromNro(atom.ElementNumber);
            isotopo = qryElement.GetAllDataIsotopo(atom.IsotopoNumber);

            if (isotopo != null && isotopo.NumeroAtomico != 0)
            {
                ActivatePanelsAtoms();

                nameLblIsotopos.text = isotopo.Isotopo + " de " + element.Name;
                //carga los datos especiales del isotopo
                SetInfoIsotopoSelected(isotopo);
            }
        }

        else //NO MUESTRA NADA Y DESACTIVA TODO SI FUERA NO ENCONTRADO! no analiza si uno de los 2 paneles estaba o no activo...
        {
            DesactivatePanelsAtoms();
        }
    }
コード例 #6
0
ファイル: MoleculeManager.cs プロジェクト: mgallo2019/SIAMM
    //spawnear molécula (objeto vacío donde se meten los objetos, como "Atom")
    public void SpawnMolecule(List <AtomInMolPositionData> atomsPosition, string name)
    {
        //intento obtener una posición disponible random
        int position;

        try
        {
            position = positionManager.ObtainRandomPositionIndex();
        }
        //si no hay mas posiciones disponibles, lo loggeo y me voy
        catch (NoPositionsLeftException nple)
        {
            Debug.Log(nple.Message);
            return;
        }
        //instancio la molécula, y seteo posición
        Molecule newMolecule = Instantiate <Molecule>(moleculePrefab);

        newMolecule.transform.localPosition = positionManager.PlanePositions[position];
        molecules.Add(newMolecule);
        //seteo nombre
        newMolecule.SetMoleculeName(name);
        //spawneo todos sus átomos
        foreach (AtomInMolPositionData pos in atomsPosition)
        {
            //query a la tabla de elementos para obtener clasificación_grupo
            ElementTabPer element = dBManager.GetElementFromNro(pos.ElementId);
            //obtengo el material según la clasif
            Material mat = materials[GetMaterialIndexFromDictionary(element.ClasificacionGrupo)];
            newMolecule.SpawnAtom(pos, mat);
        }
        //y despues sus conexiones una vez que esten todos posicionados
        foreach (AtomInMolPositionData atom in atomsPosition)
        {
            //si es que tiene alguna
            if (atom.ConnectedTo > 0)
            {
                newMolecule.SpawnConnection(atom.Id, atom.ConnectedTo, atom.ConnectionType);
            }
        }
    }
コード例 #7
0
    /*Metodo para el seteo de los objetos TEXT de cada boton de la tabla periodica*/
    private void LoadData(Button elem)
    {
        ElementTabPer element = new ElementTabPer();

        //obtiene datos del elemento según cantidad de protones
        try
        {
            element = qryElement.GetElementFromNro(getNroAtomicoId(elem));
        }
        catch (Exception e)
        {
            Debug.LogError("LoadTPer :: Ocurrio un error al buscar Elemento desde Identificador: " + e.Message);
            popup.MostrarPopUp("Elementos Qry DB", "Error obteniendo Elemento desde Identificador");
            return;
        }

        //obtengo la lista de objetos o coleccion de objetos de tipo TEXT que estan en los botones
        Text[] textosObj = elem.GetComponentsInChildren <Text>();

        //recorro todos los game object que contiene el boton, se podria hacer por orden de objetos, como estan creados en el boton
        for (int j = 0; j < textosObj.Length; j++)
        {
            if (textosObj[j].name == "txtDistElect")
            {
                textosObj[j].text = managerNullables(element.ConfElectronica);
            }
            if (textosObj[j].name == "txtPeso")
            {
                textosObj[j].text = Convert.ToString(element.PesoAtomico);
            }
            if (textosObj[j].name == "txtNombre")
            {
                textosObj[j].text = element.Simbol;
            }
        }

        //a cada boton le voy a agregar componentes que estan por fuera del prefab para el manejo de tooltips
        LoadToolTip(elem, element.Name);
    }
コード例 #8
0
ファイル: QryElementos.cs プロジェクト: AliMatias/SIAMM
    //trae un elemento DE LA TABLA PERIODICA A PARTIR DEL NRO, para los BOTONES
    public ElementTabPer GetElementFromNro(int nro)
    {
        ElementTabPer elementTabPer = new ElementTabPer();
        //dejo un reader local para cada query, no siendo global
        SqliteDataReader reader       = null;
        SqliteConnection dbConnection = null;

        try
        {
            string sqlQuery = "SELECT simbolo, peso_atomico, configuracion_electronica_abreviada, " +
                              "nombre, clasificacion_grupo " +
                              "FROM elementos_info_basica WHERE numero_atomico="
                              + nro + ";";

            //LLAMADA AL METODO DE LA DBMANAGER
            dbConnection = dBManager.openCon();
            reader       = dBManager.ManageExec(dbConnection, sqlQuery);

            while (reader.Read())
            {
                elementTabPer.Nroatomico         = nro;
                elementTabPer.Simbol             = reader.GetString(0);
                elementTabPer.PesoAtomico        = reader.GetFloat(1);
                elementTabPer.ConfElectronica    = dBManager.SafeGetString(reader, 2);
                elementTabPer.Name               = reader.GetString(3);
                elementTabPer.ClasificacionGrupo = reader.GetString(4);
            }
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            dBManager.ManageClosing(dbConnection, reader);
        }

        return(elementTabPer);
    }