public static Personaje montarPersonaje(string cadena)
        {
            Personaje p = null; string[] campos = cadena.Split(','); // recupero los atributos del personaje y se los voy asignando.
            string auxAtb , auxTags, auxHab, auxObjMoch; int i;
            string[] auxAtb2, auxTags2, auxHab2, auxObjMoch2;
            if (campos.Length >= 11) {
                p = new Personaje();
                p.nombreP = campos[0];
                p.nombreJ = campos[1];
                p.genero = campos[2];
                p.raza = campos[3];
                p.clase = campos[4];
                auxAtb = campos[5];
                auxTags = campos[6];
                auxHab = campos[7];
                p.numTirada = Convert.ToInt32(campos[8]);
                p.habPorSeleccionar = Convert.ToInt32(campos[9]);
                p.ptosARepartirA = Convert.ToInt32(campos[10]);
                auxObjMoch = campos[11];

                auxAtb2 = auxAtb.Split('.'); // a los campos que son array le vuelvo a hacer split para obtener los valores.
                for (i = 0; i < auxAtb2.Length - 1; i++)
                    p.atributos[i] = Convert.ToInt32(auxAtb2[i]);

                auxTags2 = auxTags.Split('.');
                for (i = 0; i < auxTags2.Length - 1; i++)
                    p.tagsAtb[i] = Convert.ToInt32(auxTags2[i]);

                auxHab2 = auxHab.Split('.');
                for (i = 0; i < auxHab2.Length - 1; i++)
                    p.habilidades[i] = Convert.ToBoolean(auxHab2[i]);

                auxObjMoch2 = auxObjMoch.Split('.');
                for (i = 0; i < auxObjMoch2.Length - 1; i++)
                    p.objetosMochila[i] = auxObjMoch2[i];

                int hashPersonaje = p.hashCode();
                int hashLeido = Convert.ToInt32(campos[12]);
                if (p.hashCode() != Convert.ToInt32(campos[12]))
                    p = null;
            }
            return p;
        }
 private void guardarPersonaje(object sender, EventArgs e)
 {
     if (!album.personajesMismoNombre(txtNombrePersonaje.Text)) { // Si no existe ya un personaje con el mismo nombre, guardo el personaje.
         int[] tagsAtb = { (int)decVit.Tag, (int)decPerc.Tag, (int)decDest.Tag, (int)decFuer.Tag, (int)decIng.Tag, (int)decCor.Tag, (int)decCar.Tag, (int)decIni.Tag, (int)decRef.Tag, (int)decVel.Tag };
         // Creo un personaje recogiendo la información de la ficha newPesonaje.
         Personaje p = new Personaje(txtNombrePersonaje.Text, txtNombreJugador.Text, rbtnFemenino.Checked ? rbtnFemenino.Text : rbtnMasculino.Text, combRaza.SelectedItem.ToString(), combClase.SelectedItem.ToString(), recogerValoresAtributos(), tagsAtb, recogerValoresHabilidades(), numTirada, habPorSelect, ptosRepAtrib, recogerObjetosMochila());
         album.agregarPersonaje(p); // agrego el personaje creado al álbum.
         if (album.cuantosPjHay() == 1) { // Si después de guardar el número de personajes es igual a 1, habilito el modo vista de personajes.
             imgAlbum.BackgroundImage = Properties.Resources.album;
             imgAlbum.Enabled = true;
         }
         ocultarPaginaNewPersonaje();
         actualizarFlechasDesplazamiento();
         numTirada = 0; habilitarDado();
         this.BackgroundImage = Properties.Resources.fondo;
         menuSeleccion.Visible = true;
     } else
         MessageBox.Show("Ya existe un personaje con ese nombre. Por favor, cambie el nombre del personaje.", "Error");
 }
 private string[] dameNombresHab(Personaje p)
 {
     string[] resp = new string[8]; int cont = 0;
     for (int i = 0; i < p.getHabilidades().Length; i++) // Recorro el array de habilidades del personaje.
         if (p.getHabilidades()[i]) { // Si la habilidad está marcada:
             resp[cont] = getTextCheckboxHab(i); // cojo la descripción de esa habilidad.
             cont++;
         }
     return resp;
 }
 private void cargarPersonajeModoVision(Personaje p)
 {
     string[] hab = dameNombresHab(p); // cargo todos los datos del personaje que se muestran en la vista de personaje.
     cargarDatoPersonaje(p, lblNombPersMV, lblNombJugMV, lblTipoPsjMV, pbVitMV, pbPercMV, pbDestMV, pbFuerMV, pbIngMV, pbCorMV, pbCarMV, pbIniMV, pbRefMV, pbVelMV, imgObj1MV, imgObj2MV, imgObj3MV, imgObj4MV);
     hab1MV.Text = hab[0]; hab2MV.Text = hab[1]; hab3MV.Text = hab[2]; hab4MV.Text = hab[3];
     hab5MV.Text = hab[4]; hab6MV.Text = hab[5]; hab7MV.Text = hab[6]; hab8MV.Text = hab[7];
     cargarImgPersonaje(identificarPersonaje(p.getClase(), p.getGenero()));
 }
 private void cargarPersonajeModoEdicion(Personaje p)
 {
     // cargo todos los datos del personaje que se muestran en el modo edición.
     cargarDatoPersonaje(p, lblNombrePME, lblNombreJME, lblTipoME, pbVitalidad, pbPercepcion, pbDestreza, pbFuerza, pbIngenio, pbCoraje, pbCarisma, pbIniciativa, pbReflejos, pbVelocidad, mObj1, mObj2, mObj3, mObj4);
     cboxAbrCerr.Checked = p.getHabilidades()[0]; cboxEsquivar.Checked = p.getHabilidades()[1]; cboxSigilo.Checked = p.getHabilidades()[2]; cboxDetMent.Checked = p.getHabilidades()[3];
     cboxPersuasion.Checked = p.getHabilidades()[4]; cboxTrampasFosos.Checked = p.getHabilidades()[5]; cboxOcultarse.Checked = p.getHabilidades()[6]; cboxHurtar.Checked = p.getHabilidades()[7];
     cboxEscalar.Checked = p.getHabilidades()[8]; cboxNadar.Checked = p.getHabilidades()[9]; cboxEnganiar.Checked = p.getHabilidades()[10]; cboxEquilibrio.Checked = p.getHabilidades()[11];
     cboxDisfrazarse.Checked = p.getHabilidades()[12]; cboxSaltar.Checked = p.getHabilidades()[13]; cboxPunteria.Checked = p.getHabilidades()[14]; cboxPrimerosAux.Checked = p.getHabilidades()[15];
     cboxIntimidar.Checked = p.getHabilidades()[16]; cboxInterrog.Checked = p.getHabilidades()[17]; cboxLeerLabios.Checked = p.getHabilidades()[18];
     decVit.Tag = p.getTagsAtb()[0]; decPerc.Tag = p.getTagsAtb()[1]; decDest.Tag = p.getTagsAtb()[2]; decFuer.Tag = p.getTagsAtb()[3]; decIng.Tag = p.getTagsAtb()[4]; decCor.Tag = p.getTagsAtb()[5];
     decCar.Tag = p.getTagsAtb()[6]; decIni.Tag = p.getTagsAtb()[7]; decRef.Tag = p.getTagsAtb()[8]; decVel.Tag = p.getTagsAtb()[9];
     ptosRepAtrib = p.getPtosARepartirA();
     numTiradaME = p.getNumTirada();
     habPorSelect = p.getHabPorSeleccionar();
     lblPuntosRepartirA.Text = Constantes.PTOS_A_REP + ptosRepAtrib;
     lblHabilidadesPorSelec.Text = Constantes.HAB_POR_SELEC + habPorSelect;
     adaptarFlechasRepartoAtbModoEdicion();
     adaptarObjetosEquipables();
     if (habPorSelect > 0)
         habilitarHabilidades();
     if (numTiradaME == Constantes.MAX_TIRADAS)
         deshabilitarDado();
     else
         habilitarDado();
 }
 private void cargarDatoPersonaje(Personaje p, Label nombreP, Label nombreJ, Label tipo, ProgressBar vitalidad, ProgressBar percepcion, ProgressBar destreza, ProgressBar fuerza, ProgressBar ingenio, ProgressBar coraje, ProgressBar carisma, ProgressBar iniciativa, ProgressBar reflejos, ProgressBar velocidad, PictureBox objeto1, PictureBox objeto2, PictureBox objeto3, PictureBox objeto4)
 {
     Image[] objetosMochila; // Cargo los datos del personaje comunes al modo edición y al modo visión.
     nombreP.Text = Constantes.LBL_NOMBRE_PJ + p.getNombreP();
     nombreJ.Text = Constantes.LBL_NOMBRE_JUG + p.getNombreJ();
     tipo.Text = Constantes.LBL_TIPO + p.getRaza() + ", " + p.getClase();
     vitalidad.Value = p.getAtributos()[0]; percepcion.Value = p.getAtributos()[1]; destreza.Value = p.getAtributos()[2]; fuerza.Value = p.getAtributos()[3]; ingenio.Value = p.getAtributos()[4]; coraje.Value = p.getAtributos()[5];
     carisma.Value = p.getAtributos()[6]; iniciativa.Value = p.getAtributos()[7]; reflejos.Value = p.getAtributos()[8]; velocidad.Value = p.getAtributos()[9];
     cargarObjetosEquipables(p.getClase());
     objetosMochila = cargarObjetosEnMochila(p.getObjetosMochila());
     objeto1.BackgroundImage = objetosMochila[0]; objeto2.BackgroundImage = objetosMochila[1]; objeto3.BackgroundImage = objetosMochila[2]; objeto4.BackgroundImage = objetosMochila[3];
 }
 public void agregarPersonaje(Personaje p)
 {
     lista.AddLast(p);
 }