[Scummvm-cvs-logs] SF.net SVN: scummvm: [30995] scummvm/trunk/engines/drascula
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Fri Feb 29 01:04:44 CET 2008
Revision: 30995
http://scummvm.svn.sourceforge.net/scummvm/?rev=30995&view=rev
Author: aquadran
Date: 2008-02-28 16:04:43 -0800 (Thu, 28 Feb 2008)
Log Message:
-----------
fixed restore savegame from different part of game
Modified Paths:
--------------
scummvm/trunk/engines/drascula/drascula.cpp
scummvm/trunk/engines/drascula/drascula.h
Modified: scummvm/trunk/engines/drascula/drascula.cpp
===================================================================
--- scummvm/trunk/engines/drascula/drascula.cpp 2008-02-28 22:53:51 UTC (rev 30994)
+++ scummvm/trunk/engines/drascula/drascula.cpp 2008-02-29 00:04:43 UTC (rev 30995)
@@ -126,6 +126,7 @@
int DrasculaEngine::go() {
num_ejec = 0;
+ hay_que_load = 0;
for (;;) {
VGA = (byte *)malloc(320 * 200);
@@ -152,7 +153,6 @@
cont_sv = 0;
term_int = 0;
con_voces = 1;
- hay_que_load = 0;
corta_musica = 0;
hay_seleccion = 0;
Leng = 0;
@@ -166,8 +166,11 @@
ald = NULL;
asigna_memoria();
- carga_info();
+ hay_sb = 1;
+ con_voces = 0;
+ hay_seleccion = 0;
+
num_ejec++;
if (num_ejec != 6) {
@@ -300,12 +303,6 @@
free(dir_hare_frente);
}
-void DrasculaEngine::carga_info() {
- hay_sb = 1;
- con_voces = 0;
- hay_que_load = 0;
-}
-
void DrasculaEngine::lee_dibujos(const char *NamePcc) {
unsigned int con, x = 0;
unsigned int fExit = 0;
@@ -528,9 +525,11 @@
descomprime_dibujo(dir_dibujo2, 1);
sentido_hare = 1;
obj_saliendo = 104;
- if (hay_que_load != 0)
- para_cargar(nom_partida);
- else {
+ if (hay_que_load != 0) {
+ if (!para_cargar(nom_partida)) {
+ return true;
+ }
+ } else {
carga_escoba("62.ald");
hare_x = -20;
hare_y = 56;
@@ -543,8 +542,11 @@
obj_saliendo = 162;
if (hay_que_load == 0)
carga_escoba("14.ald");
- else
- para_cargar(nom_partida);
+ else {
+ if (!para_cargar(nom_partida)) {
+ return true;
+ }
+ }
} else if (num_ejec == 3) {
suma_objeto(28);
suma_objeto(11);
@@ -559,8 +561,11 @@
obj_saliendo = 99;
if (hay_que_load == 0)
carga_escoba("20.ald");
- else
- para_cargar(nom_partida);
+ else {
+ if (!para_cargar(nom_partida)) {
+ return true;
+ }
+ }
} else if (num_ejec == 4) {
suma_objeto(28);
suma_objeto(9);
@@ -573,8 +578,11 @@
sentido_hare = 0;
hare_x = 235;
hare_y = 164;
- } else
- para_cargar(nom_partida);
+ } else {
+ if (!para_cargar(nom_partida)) {
+ return true;
+ }
+ }
} else if (num_ejec == 5) {
suma_objeto(28);
suma_objeto(7);
@@ -590,8 +598,11 @@
obj_saliendo = 100;
if (hay_que_load == 0) {
carga_escoba("45.ald");
- } else
- para_cargar(nom_partida);
+ } else {
+ if (!para_cargar(nom_partida)) {
+ return true;
+ }
+ }
} else if (num_ejec == 6) {
suma_objeto(28);
suma_objeto(9);
@@ -601,8 +612,11 @@
obj_saliendo = 104;
if (hay_que_load == 0)
carga_escoba("58.ald");
- else
- para_cargar(nom_partida);
+ else {
+ if (!para_cargar(nom_partida)) {
+ return true;
+ }
+ }
if (hay_que_load == 0)
animacion_1_6();
else {
@@ -726,7 +740,8 @@
if (num_ejec != 3)
cont_sv = 0;
} else if (key == Common::KEYCODE_F10) {
- saves();
+ if (!saves())
+ return true;
if (num_ejec != 3)
cont_sv = 0;
} else if (key == Common::KEYCODE_F8) {
@@ -748,9 +763,9 @@
if (num_ejec != 3)
cont_sv = 0;
} else if (key == Common::KEYCODE_DELETE) {
- if (num_ejec == 4)
- carga_partida("gsave00");
- else
+// if (num_ejec == 4) // FIXME
+// carga_partida("gsave00");
+// else
confirma_go();
if (num_ejec != 3)
cont_sv = 0;
@@ -1395,18 +1410,21 @@
hay_nombre = 0;
}
-void DrasculaEngine::para_cargar(char nom_game[]) {
+bool DrasculaEngine::para_cargar(char nom_game[]) {
musica_antes = musica_room;
menu_scr = 0;
if (num_ejec != 1)
borra_pantalla();
- carga_partida(nom_game);
+ if (!carga_partida(nom_game))
+ return false;
if (num_ejec == 2 || num_ejec == 3 || num_ejec == 5) {
delete ald;
ald = NULL;
}
carga_escoba(datos_actuales);
sin_verbo();
+
+ return true;
}
static char *getLine(Common::File *fp, char *buf, int len) {
@@ -2031,7 +2049,7 @@
espera_soltar();
}
-void DrasculaEngine::saves() {
+bool DrasculaEngine::saves() {
char nombres[10][23];
char fichero[13];
int n, n2, num_sav = 0, y = 27;
@@ -2126,7 +2144,8 @@
}
if (x_raton > 125 && y_raton > 123 && x_raton < 199 && y_raton < 149 && hay_seleccion == 1) {
- para_cargar(fichero);
+ if (!para_cargar(fichero))
+ return false;
break;
} else if (x_raton > 208 && y_raton > 123 && x_raton < 282 && y_raton < 149 && hay_seleccion == 1) {
para_grabar(fichero);
@@ -2156,6 +2175,8 @@
descomprime_dibujo(dir_dibujo1, MEDIA);
buffer_teclado();
hay_seleccion = 0;
+
+ return true;
}
void DrasculaEngine::print_abc(const char *dicho, int x_pantalla, int y_pantalla) {
@@ -2327,7 +2348,7 @@
if (key == Common::KEYCODE_DELETE) {
stopmusic();
- carga_partida("gsave00");
+// carga_partida("gsave00"); // FIXME
}
}
@@ -3454,7 +3475,7 @@
actualiza_refresco();
}
-void DrasculaEngine::carga_partida(const char *nom_game) {
+bool DrasculaEngine::carga_partida(const char *nom_game) {
int l, n_ejec2;
Common::InSaveFile *sav;
@@ -3465,8 +3486,9 @@
n_ejec2 = sav->readSint32LE();
if (n_ejec2 != num_ejec) {
strcpy(nom_partida, nom_game);
- error("TODO");
- salir_al_dos(n_ejec2);
+ num_ejec = n_ejec2 - 1;
+ hay_que_load = 1;
+ return false;
}
sav->read(datos_actuales, 20);
hare_x = sav->readSint32LE();
@@ -3483,6 +3505,8 @@
lleva_objeto = sav->readSint32LE();
objeto_que_lleva = sav->readSint32LE();
+
+ return true;
}
void DrasculaEngine::puertas_cerradas(int l) {
Modified: scummvm/trunk/engines/drascula/drascula.h
===================================================================
--- scummvm/trunk/engines/drascula/drascula.h 2008-02-28 22:53:51 UTC (rev 30994)
+++ scummvm/trunk/engines/drascula/drascula.h 2008-02-29 00:04:43 UTC (rev 30995)
@@ -356,7 +356,6 @@
void asigna_memoria();
void libera_memoria();
- void carga_info();
void salir_al_dos(int r);
void lee_dibujos(const char *);
@@ -568,7 +567,7 @@
void sin_verbo();
- void para_cargar(char[]);
+ bool para_cargar(char[]);
void carga_escoba(const char *);
void borra_pantalla();
void lleva_al_hare(int, int);
@@ -582,7 +581,7 @@
Common::KeyCode getscan();
void elige_verbo(int);
void mesa();
- void saves();
+ bool saves();
void print_abc(const char *, int, int);
void delay(int ms);
void confirma_go();
@@ -624,7 +623,7 @@
void stopmusic();
int music_status();
void refresca_pantalla();
- void carga_partida(const char *);
+ bool carga_partida(const char *);
void puertas_cerradas(int);
void animafin_sound_corte();
void color_hare();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list