› Foros › Multiplataforma › Desarrollo
3r Ch4mp1 escribió:¿Por que no pruebas lo siguiente? Creo que además es una solución limpia y simple:
En tu clase "Partida" o como se llame la clase que estés usando que contiene los datos del juego que quieres salvar haces lo siguiente:
- Declaras la clase como un singleton, puesto que solo vas a tener una partida, no tiene sentido tener más instancias de esta clase en la memoria.
- En los atributos de la clase metes una estructura con todos los datos que te interese salvar
- Añades una pareja de métodos estáticos (métodos de clase) para grabar y cargar partidas que graben o carguen de fichero dicha estructura y dentro de los métodos ya lo gestionas como tu veas, mediante fwrite o la funcion que corresponda.
Conclusión: Haces que tu clase sea util, protegiendote de cosas como que puedas tener una partida anterior que te haya podido quedar por memoria y de repente se reemplacen datos o alguna cosa rara y luego que desde cualquier parte del codigo mediante los metodos estaticos podras grabar y cargar partidas con solo tener un puntero a la instancia unica de la clase Partida, ahorrandote un cojon de codigo y sobre todo muuucha mierda que te pueda salir de hacer copia y pega.
Saludos!
ffelagund escribió:boost::serialization es tu amiga
3r Ch4mp1 escribió:Y yo que creia que boost no funcionaba en la psp y tal...la probaré porque es una herramiente de puta madre. Por cierto, ¿alguna particularidad o truco que haya que hacer para compilarla para PSP?
Saludos!
// asumimos que f está abierto para escribir
CPartida::GrabarFichero(FILE *f)
{
fwrite(&nivel, sizeof(nivel), 1, f);
fwrite(&vida, sizeof(vida), 1, f);
fwrite(&puntos, sizeof(puntos), 1, f);
lista_enemigos.GrabarFichero(f);
lista_disparos.GrabarFichero(f);
}