//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); }
/*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; } } }
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; }
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); } }
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(); } }
//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); } } }
/*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); }
//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); }