tengo un fichero estructurado como este:
Nubes
ms0:/media/fondo.bmp
Cielo
ms0:/media/fondo2.bmp
batalla
ms0:/media/fondo3.bmp
relajante
ms0:/media/sonido2.at3
sam
ms0:/media/sonido.at3
santhy
2
prog
ms0:/media/pers1.bmp
feliz
ms0:/media/pers2.bmp
saulot
2
PSP
ms0:/media/pers5.bmp
cansado
ms0:/media/pers3.bmp
Nubes
sam
santhy
Izquierda
prog
asdasd
saulot
Izquierda
PSP
asd
Cielo
santhy
Central
feliz
asdasd
saulot
Invisible
cansado
asd
relajante
santhy
Central
feliz
asdasd
Nubes
santhy
Izquierda
prog
asdasd
sam
santhy
Izquierda
prog
asdasd
saulot
Invisible
cansado
asd
al cargarlo con esta función:
void prepararGuion(char *fichero){
animacion * ani;
std::fstream f;
char aux[4098];
char * nombre;
char *nombref;
char *imagenf;
char * posicion;
char * dialogo;
char *rutaAnimacion;
char *nombreanimacion;
char aux2[2];
entradaGuion *eg;
fondod * fondo;
sonidof* snd2;
sprintf(aux2,"");
personaje * persona;
int nanimaciones;
f.open(fichero,std::fstream::in);
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
nombref=new char[1024];
strcpy(nombref,aux);
imagenf=new char[1024];
f.getline(aux,1024,'\n');
strcpy(imagenf,aux);
f.getline(aux,1024,'\n');
fondo=new fondod(nombref,imagenf);
fondos.push_back(fondo);
}
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
nombref=new char[1024];
strcpy(nombref,aux);
imagenf=new char[1024];
f.getline(aux,1024,'\n');
strcpy(imagenf,aux);
f.getline(aux,1024,'\n');
snd2=new sonidof(nombref,imagenf);
sonidos.push_back(snd2);
}
f.getline(aux,1024,'\n');
while (strcmp(aux,aux2)!=0){
nombre=new char[1024];
strcpy(nombre,aux);
persona=new personaje(nombre);
f.getline(aux,1024,'\n');
nanimaciones= atoi(aux);
for(int s=0;s<nanimaciones;s++){
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,1024,'\n');
rutaAnimacion=new char[1024];
strcpy(rutaAnimacion,aux);
ani=new animacion(nombreanimacion,rutaAnimacion);
persona->animaciones.push_back(ani);
}
personas.push_back(persona);
f.getline(aux,1024,'\n');
}
f.getline(aux,1024,'\n');
while(strcmp(aux,aux2)!=0){
int cambiarfondo=buscarFondo(aux);
int cambiarsonido=buscarSonido(aux);
if(buscarPersona(aux)>=0 && cambiarfondo<0 && cambiarsonido<0){
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
guion.push_back(eg);
}
if(cambiarfondo>=0){
f.getline(aux,1024,'\n');
cambiarsonido=buscarSonido(aux);
if(cambiarsonido<0){
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->fondo=cambiarfondo;
guion.push_back(eg); //si lo pongo peta.. mágia?
}
else{
f.getline(aux,1024,'\n');
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->fondo=cambiarfondo;
eg->snd=cambiarsonido;
guion.push_back(eg);
}
}
else{
if(buscarSonido(aux)>=0){
f.getline(aux,1024,'\n');
nombre = new char[1024];
strcpy(nombre, aux);
f.getline(aux,1024,'\n');
posicion=new char[1024];
strcpy(posicion,aux);
f.getline(aux,1024,'\n');
nombreanimacion=new char[1024];
strcpy(nombreanimacion,aux);
f.getline(aux,4098,'\n');
dialogo=new char[4098];
strcpy(dialogo,aux);
eg= new entradaGuion(nombre,nombreanimacion,dialogo,posicion);
eg->snd=cambiarsonido;
guion.push_back(eg);
}
}
f.getline(aux,1024,'\n');
}
}
a veces falla al leer el ultimo loop esta idea la tube a partir de ver que la idea naif no funcionaba que era leer nombre de personaje si el nombre es un fondo avanzo lectura, leer sonido si el nombre es un sonido avanzo lectura y por último si el nombre es un personaje leo la frase el nombre y la posición.
nada no va