aboutsummaryrefslogtreecommitdiff
path: root/engines/drascula
diff options
context:
space:
mode:
Diffstat (limited to 'engines/drascula')
-rw-r--r--engines/drascula/animation.cpp507
-rw-r--r--engines/drascula/detection.cpp63
-rw-r--r--engines/drascula/drascula.cpp1582
-rw-r--r--engines/drascula/drascula.h161
-rw-r--r--engines/drascula/rooms.cpp1301
-rw-r--r--engines/drascula/talk.cpp729
-rw-r--r--engines/drascula/texts.cpp33
7 files changed, 2066 insertions, 2310 deletions
diff --git a/engines/drascula/animation.cpp b/engines/drascula/animation.cpp
index 7c0d167299..a2cd43eac2 100644
--- a/engines/drascula/animation.cpp
+++ b/engines/drascula/animation.cpp
@@ -65,7 +65,7 @@ void DrasculaEngine::animation_1_1() {
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
color_abc(RED);
- centra_texto("Transilvanya, 1993 d.c.", 160, 100);
+ centra_texto(_textmisc[_lang][1], 160, 100);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
@@ -81,15 +81,13 @@ void DrasculaEngine::animation_1_1() {
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
clearRoom();
- comienza_sound("s5.als");
+ playSound("s5.als");
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("scr2.bin", 17);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("scr2.bin", 17))
break;
- fin_sound_corte();
- anima("scr3.bin", 17);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ stopSound_corte();
+ if (anima("scr3.bin", 17))
break;
loadPic("cielo2.alg");
decompressPic(dir_zona_pantalla, 256);
@@ -198,11 +196,9 @@ void DrasculaEngine::animation_1_1() {
talk_dr_izq(_textd[_lang][3], "d3.als");
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("lib.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("lib.bin", 16))
break;
- anima("lib2.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("lib2.bin", 16))
break;
clearRoom();
color_solo = RED;
@@ -219,8 +215,7 @@ void DrasculaEngine::animation_1_1() {
talk_solo(_textd[_lang][5], "d5.als");
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("lib2.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("lib2.bin", 16))
break;
clearRoom();
loadPic("plan2.alg");
@@ -230,8 +225,7 @@ void DrasculaEngine::animation_1_1() {
talk_solo(_textd[_lang][6], "d6.als");
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("lib2.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("lib2.bin", 16))
break;
clearRoom();
loadPic("plan3.alg");
@@ -269,23 +263,18 @@ void DrasculaEngine::animation_1_1() {
talk_dr_izq(_textd[_lang][10], "d10.als");
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("rayo1.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("rayo1.bin", 16))
break;
- comienza_sound("s5.als");
- anima("rayo2.bin", 15);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ playSound("s5.als");
+ if (anima("rayo2.bin", 15))
break;
- anima("frel2.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("frel2.bin", 16))
break;
- anima("frel.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("frel.bin", 16))
break;
- anima("frel.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("frel.bin", 16))
break;
- fin_sound_corte();
+ stopSound_corte();
clearRoom();
black();
playMusic(23);
@@ -388,18 +377,12 @@ void DrasculaEngine::animation_1_1() {
}
void DrasculaEngine::talk_dr_grande(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
int x_talk[4] = {47, 93, 139, 185};
int cara;
int l = 0;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(RED);
@@ -444,8 +427,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
}
@@ -462,10 +445,12 @@ void DrasculaEngine::animation_2_1() {
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("ag.bin", 14);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("ag.bin", 14))
break;
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an11y13.alg");
decompressPic(dir_hare_dch, 1);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
@@ -475,15 +460,18 @@ void DrasculaEngine::animation_2_1() {
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
loadPic("97.alg");
decompressPic(dir_hare_dch, 1);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
pause(4);
- comienza_sound("s1.als");
+ playSound("s1.als");
hipo(18);
- fin_sound();
+ stopSound();
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
@@ -524,7 +512,7 @@ void DrasculaEngine::animation_2_1() {
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- strcpy(num_room, "16.alg");
+ roomNumber = 16;
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
@@ -545,8 +533,7 @@ void DrasculaEngine::animation_2_1() {
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("lev.bin", 15);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("lev.bin", 15))
break;
lleva_al_hare(100 + ancho_hare / 2, 99 + alto_hare);
@@ -556,28 +543,28 @@ void DrasculaEngine::animation_2_1() {
hare_x = 100;
hare_y = 95;
- talk_bj(_textbj[_lang][2], "BJ2.als");
- talk(_text[_lang][215], "215.als");
- talk_bj(_textbj[_lang][3], "BJ3.als");
- talk(_text[_lang][216], "216.als");
- talk_bj(_textbj[_lang][4], "BJ4.als");
- talk_bj(_textbj[_lang][5], "BJ5.als");
- talk_bj(_textbj[_lang][6], "BJ6.als");
- talk(_text[_lang][217], "217.als");
- talk_bj(_textbj[_lang][7], "BJ7.als");
- talk(_text[_lang][218], "218.als");
- talk_bj(_textbj[_lang][8], "BJ8.als");
- talk(_text[_lang][219], "219.als");
- talk_bj(_textbj[_lang][9], "BJ9.als");
- talk(_text[_lang][220], "220.als");
- talk(_text[_lang][221], "221.als");
- talk_bj(_textbj[_lang][10], "BJ10.als");
- talk(_text[_lang][222], "222.als");
- anima("gaf.bin", 15);
- anima("bjb.bin", 14);
- playMusic(9);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ talk_bj(2);
+ talk(215);
+ talk_bj(3);
+ talk(216);
+ talk_bj(4);
+ talk_bj(5);
+ talk_bj(6);
+ talk(217);
+ talk_bj(7);
+ talk(218);
+ talk_bj(8);
+ talk(219);
+ talk_bj(9);
+ talk(220);
+ talk(221);
+ talk_bj(10);
+ talk(222);
+ if (anima("gaf.bin", 15))
+ break;
+ if (anima("bjb.bin", 14))
break;
+ playMusic(9);
loadPic("97.alg");
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
@@ -616,33 +603,41 @@ void DrasculaEngine::animation_2_1() {
pause(60);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- talk(_text[_lang][224], "224.als");
+ talk(224);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- talk_bj(_textbj[_lang][12], "BJ12.als");
+ talk_bj(12);
lleva_al_hare(157, 98 + alto_hare);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- anima("bes.bin", 16);
+ if (anima("bes.bin", 16))
+ break;
playMusic(11);
- anima("rap.bin", 16);
- if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
+ if (anima("rap.bin", 16))
break;
sentido_hare = 3;
- strcpy(num_room, "no_bj.alg");
+ // The room number was originally changed here to "no_bj.alg",
+ // which doesn't exist. In reality, this was just a hack to
+ // set the room number to a non-existant one, so that BJ does
+ // not appear again when the room is refreshed after the
+ // animation where Count Drascula abducts her. We set the
+ // room number to -1 for the same purpose
+ // Also check animation_9_6(), where the same hack was used by
+ // the original
+ roomNumber = -1;
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
pause(8);
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- talk(_text[_lang][225], "225.als");
+ talk(225);
pause(76);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
sentido_hare = 1;
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- talk(_text[_lang][226], "226.als");
+ talk(226);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
updateRoom();
@@ -650,13 +645,16 @@ void DrasculaEngine::animation_2_1() {
pause(30);
if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE))
break;
- talk(_text[_lang][227],"227.als");
+ talk(227);
FundeAlNegro(0);
break;
}
}
void DrasculaEngine::animation_3_1() {
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an11y13.alg");
decompressPic(dir_hare_dch, 1);
@@ -683,11 +681,17 @@ void DrasculaEngine::animation_3_1() {
flags[0] = 1;
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
loadPic("97.alg");
decompressPic(dir_hare_dch, 1);
}
void DrasculaEngine::animation_4_1() {
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an12.alg");
decompressPic(dir_hare_dch, 1);
@@ -720,6 +724,9 @@ void DrasculaEngine::animation_4_1() {
talk_pianista(_textp[_lang][4], "p4.als");
talk(_text[_lang][209], "209.als");
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
flags[11] = 0;
loadPic("97.alg");
decompressPic(dir_hare_dch, 1);
@@ -775,7 +782,7 @@ void DrasculaEngine::animation_2_2() {
}
x = 0;
- comienza_sound("s2.als");
+ playSound("s2.als");
for (n = 0; n < 6; n++) {
x++;
@@ -807,13 +814,13 @@ void DrasculaEngine::animation_2_2() {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
+ stopSound();
pause (4);
- comienza_sound("s1.als");
+ playSound("s1.als");
hipo_sin_nadie(12);
- fin_sound();
+ stopSound();
}
void DrasculaEngine::animation_3_2() {
@@ -842,6 +849,9 @@ void DrasculaEngine::animation_4_2() {
loadPic("ciego5.alg");
decompressPic(dir_hare_frente, 1);
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
@@ -868,7 +878,7 @@ void DrasculaEngine::animation_4_2() {
talk_ciego(_textd[_lang][75],"d75.als", _textd1[_lang][75 - TEXTD_START]);
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- _system->delayMillis(1);
+ _system->delayMillis(1000);
talk_hacker(_textd[_lang][64], "d64.als");
talk_ciego(_textd[_lang][76], "d76.als", _textd1[_lang][76 - TEXTD_START]);
@@ -892,6 +902,9 @@ void DrasculaEngine::animation_4_2() {
decompressPic(dir_hare_fondo, 1);
withoutVerb();
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
flags[9] = 0;
flags[4] = 1;
}
@@ -953,10 +966,10 @@ void DrasculaEngine::animation_14_2() {
decompressPic(dir_dibujo1, 1);
- comienza_sound("s7.als");
+ playSound("s7.als");
hipo(15);
- fin_sound();
+ stopSound();
loadPic("99.alg");
decompressPic(dir_hare_fondo, 1);
@@ -1011,9 +1024,9 @@ void DrasculaEngine::animation_16_2() {
goto asco;
if (_lang == kSpanish)
- _system->delayMillis(3);
+ _system->delayMillis(3000);
else
- _system->delayMillis(4);
+ _system->delayMillis(4000);
key = getscan();
if (key != 0)
@@ -1038,9 +1051,9 @@ void DrasculaEngine::animation_16_2() {
goto asco;
if (_lang == kSpanish)
- _system->delayMillis(3);
+ _system->delayMillis(3000);
else
- _system->delayMillis(4);
+ _system->delayMillis(4000);
key = getscan();
if (key != 0)
@@ -1065,9 +1078,9 @@ void DrasculaEngine::animation_16_2() {
goto asco;
if (_lang == kSpanish)
- _system->delayMillis(3);
+ _system->delayMillis(3000);
else
- _system->delayMillis(4);
+ _system->delayMillis(4000);
key = getscan();
if (key != 0)
@@ -1092,9 +1105,9 @@ void DrasculaEngine::animation_16_2() {
goto asco;
if (_lang == kSpanish)
- _system->delayMillis(2);
+ _system->delayMillis(2000);
else
- _system->delayMillis(4);
+ _system->delayMillis(4000);
key = getscan();
if (key != 0)
@@ -1116,7 +1129,9 @@ void DrasculaEngine::animation_16_2() {
asco:
loadPic(roomDisk);
decompressPic(dir_dibujo3, 1);
- loadPic(num_room);
+ char rm[20];
+ sprintf(rm, "%i.alg", roomNumber);
+ loadPic(rm);
decompressPic(dir_dibujo1, HALF_PAL);
black();
updateRoom();
@@ -1135,24 +1150,24 @@ void DrasculaEngine::animation_17_2() {
}
void DrasculaEngine::animation_19_2() {
- talk_vbpuerta(_textvb[_lang][5], "VB5.als");
+ talk_vbpuerta(5);
}
void DrasculaEngine::animation_20_2() {
- talk_vbpuerta(_textvb[_lang][7], "VB7.als");
- talk_vbpuerta(_textvb[_lang][8], "VB8.als");
- talk(_text[_lang][383], "383.als");
- talk_vbpuerta(_textvb[_lang][9], "VB9.als");
- talk(_text[_lang][384], "384.als");
- talk_vbpuerta(_textvb[_lang][10], "VB10.als");
- talk(_text[_lang][385], "385.als");
- talk_vbpuerta(_textvb[_lang][11], "VB11.als");
+ talk_vbpuerta(7);
+ talk_vbpuerta(8);
+ talk(383);
+ talk_vbpuerta(9);
+ talk(384);
+ talk_vbpuerta(10);
+ talk(385);
+ talk_vbpuerta(11);
if (flags[23] == 0) {
- talk(_text[_lang][350], "350.als");
- talk_vbpuerta(_textvb[_lang][57], "VB57.als");
+ talk(350);
+ talk_vbpuerta(57);
} else {
- talk(_text[_lang][386], "386.als");
- talk_vbpuerta(_textvb[_lang][12], "VB12.als");
+ talk(386);
+ talk_vbpuerta(12);
flags[18] = 0;
flags[14] = 1;
openDoor(15, 1);
@@ -1169,7 +1184,7 @@ void DrasculaEngine::animation_20_2() {
}
void DrasculaEngine::animation_21_2() {
- talk_vbpuerta(_textvb[_lang][6], "VB6.als");
+ talk_vbpuerta(6);
}
void DrasculaEngine::animation_23_2() {
@@ -1179,26 +1194,26 @@ void DrasculaEngine::animation_23_2() {
flags[21] = 1;
if (flags[25] == 0) {
- talk_vb(_textvb[_lang][13], "VB13.als");
- talk_vb(_textvb[_lang][14], "VB14.als");
+ talk_vb(13);
+ talk_vb(14);
pause(10);
- talk(_text[_lang][387], "387.als");
+ talk(387);
}
- talk_vb(_textvb[_lang][15], "VB15.als");
+ talk_vb(15);
lleva_vb(42);
sentido_vb = 1;
- talk_vb(_textvb[_lang][16], "VB16.als");
+ talk_vb(16);
sentido_vb = 2;
lleva_al_hare(157, 147);
lleva_al_hare(131, 149);
sentido_hare = 0;
animation_14_2();
if (flags[25] == 0)
- talk_vb(_textvb[_lang][17], "VB17.als");
+ talk_vb(17);
pause(8);
sentido_vb = 1;
- talk_vb(_textvb[_lang][18], "VB18.als");
+ talk_vb(18);
if (flags[29] == 0)
animation_23_anexo();
@@ -1210,9 +1225,9 @@ void DrasculaEngine::animation_23_2() {
lleva_vb(99);
if (flags[29] == 0) {
- talk_vb(_textvb[_lang][19], "VB19.als");
+ talk_vb(19);
if (flags[25] == 0) {
- talk_vb(_textvb[_lang][20],"VB20.als");
+ talk_vb(20);
if (resta_objeto(7) == 0)
flags[30] = 1;
if (resta_objeto(18) == 0)
@@ -1220,7 +1235,7 @@ void DrasculaEngine::animation_23_2() {
if (resta_objeto(19) == 0)
flags[32] = 1;
}
- talk_vb(_textvb[_lang][21], "VB21.als");
+ talk_vb(21);
} else
animation_27_2();
@@ -1289,7 +1304,7 @@ void DrasculaEngine::animation_25_2() {
flags[24] = 0;
- comienza_sound("s6.als");
+ playSound("s6.als");
for (n = 0; n >= -160; n = n - 8) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
@@ -1306,7 +1321,7 @@ void DrasculaEngine::animation_25_2() {
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
- fin_sound();
+ stopSound();
loadPic("99.alg");
decompressPic(dir_hare_fondo, 1);
@@ -1319,63 +1334,63 @@ void DrasculaEngine::animation_27_2() {
resta_objeto(23);
suma_objeto(11);
- talk_vb(_textvb[_lang][23], "VB23.als");
- talk_vb(_textvb[_lang][24], "VB24.als");
+ talk_vb(23);
+ talk_vb(24);
if (flags[30] == 1)
suma_objeto(7);
if (flags[31] == 1)
suma_objeto(18);
if (flags[32] == 1)
suma_objeto(19);
- talk_vb(_textvb[_lang][25],"VB25.als");
- talk_vb(_textvb[_lang][26],"VB26.als");
+ talk_vb(25);
+ talk_vb(26);
}
void DrasculaEngine::animation_28_2() {
- talk_vb(_textvb[_lang][27], "VB27.als");
- talk_vb(_textvb[_lang][28], "VB28.als");
- talk_vb(_textvb[_lang][29], "VB29.als");
- talk_vb(_textvb[_lang][30], "VB30.als");
+ talk_vb(27);
+ talk_vb(28);
+ talk_vb(29);
+ talk_vb(30);
}
void DrasculaEngine::animation_29_2() {
if (flags[33] == 0) {
- talk_vb(_textvb[_lang][32], "VB32.als");
- talk(_text[_lang][398], "398.als");
- talk_vb(_textvb[_lang][33], "VB33.als");
- talk(_text[_lang][399], "399.als");
- talk_vb(_textvb[_lang][34], "VB34.als");
- talk_vb(_textvb[_lang][35], "VB35.als");
- talk(_text[_lang][400], "400.als");
- talk_vb(_textvb[_lang][36], "VB36.als");
- talk_vb(_textvb[_lang][37], "VB37.als");
- talk(_text[_lang][386], "386.als");
- talk_vb(_textvb[_lang][38], "VB38.als");
- talk_vb(_textvb[_lang][39], "VB39.als");
- talk(_text[_lang][401], "401.als");
- talk_vb(_textvb[_lang][40], "VB40.als");
- talk_vb(_textvb[_lang][41], "VB41.als");
+ talk_vb(32);
+ talk(398);
+ talk_vb(33);
+ talk(399);
+ talk_vb(34);
+ talk_vb(35);
+ talk(400);
+ talk_vb(36);
+ talk_vb(37);
+ talk(386);
+ talk_vb(38);
+ talk_vb(39);
+ talk(401);
+ talk_vb(40);
+ talk_vb(41);
flags[33] = 1;
} else
- talk_vb(_textvb[_lang][43], "VB43.als");
+ talk_vb(43);
- talk(_text[_lang][402], "402.als");
- talk_vb(_textvb[_lang][42], "VB42.als");
+ talk(402);
+ talk_vb(42);
if (flags[38] == 0) {
- talk(_text[_lang][403], "403.als");
+ talk(403);
rompo_y_salgo = 1;
} else
- talk(_text[_lang][386], "386.als");
+ talk(386);
}
void DrasculaEngine::animation_30_2() {
- talk_vb(_textvb[_lang][31], "VB31.als");
- talk(_text[_lang][396], "396.als");
+ talk_vb(31);
+ talk(396);
}
void DrasculaEngine::animation_31_2() {
- talk_vb(_textvb[_lang][44], "VB44.als");
+ talk_vb(44);
lleva_vb(-50);
pause(15);
lleva_al_hare(159, 140);
@@ -1389,25 +1404,25 @@ void DrasculaEngine::animation_31_2() {
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(22);
- talk(_text[_lang][406], "406.als");
+ talk(406);
lleva_vb(98);
- talk_vb(_textvb[_lang][45], "VB45.als");
- talk_vb(_textvb[_lang][46], "VB46.als");
- talk_vb(_textvb[_lang][47], "VB47.als");
- talk(_text[_lang][407], "407.als");
- talk_vb(_textvb[_lang][48], "VB48.als");
- talk_vb(_textvb[_lang][49], "VB49.als");
- talk(_text[_lang][408], "408.als");
- talk_vb(_textvb[_lang][50], "VB50.als");
- talk_vb(_textvb[_lang][51], "VB51.als");
- talk(_text[_lang][409], "409.als");
- talk_vb(_textvb[_lang][52], "VB52.als");
- talk_vb(_textvb[_lang][53], "VB53.als");
+ talk_vb(45);
+ talk_vb(46);
+ talk_vb(47);
+ talk(407);
+ talk_vb(48);
+ talk_vb(49);
+ talk(408);
+ talk_vb(50);
+ talk_vb(51);
+ talk(409);
+ talk_vb(52);
+ talk_vb(53);
pause(12);
- talk_vb(_textvb[_lang][54], "VB54.als");
- talk_vb(_textvb[_lang][55], "VB55.als");
- talk(_text[_lang][410], "410.als");
- talk_vb(_textvb[_lang][56], "VB56.als");
+ talk_vb(54);
+ talk_vb(55);
+ talk(410);
+ talk_vb(56);
rompo_y_salgo = 1;
@@ -1479,9 +1494,9 @@ void DrasculaEngine::animation_35_2() {
pause(19);
- comienza_sound("s1.als");
+ playSound("s1.als");
hipo_sin_nadie(18);
- fin_sound();
+ stopSound();
pause(10);
@@ -1793,7 +1808,7 @@ void DrasculaEngine::animation_rayo() {
pause(50);
- comienza_sound("s5.als");
+ playSound("s5.als");
updateScreen(0, 0, 0, 0, 320, 200, dir_hare_dch);
pause(3);
@@ -1806,7 +1821,7 @@ void DrasculaEngine::animation_rayo() {
updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo3);
pause(3);
updateScreen(0, 0, 0, 0, 320, 200, dir_hare_frente);
- fin_sound();
+ stopSound();
}
void DrasculaEngine::animation_2_4() {
@@ -1848,26 +1863,26 @@ void DrasculaEngine::animation_7_4() {
void DrasculaEngine::animation_1_5() {
if (flags[0] == 0) {
talk(_text[_lang][430], "430.als");
- talk_bj(_textbj[_lang][16], "BJ16.als");
- talk_bj(_textbj[_lang][17], "BJ17.als");
- talk_bj(_textbj[_lang][18], "BJ18.als");
- talk(_text[_lang][217], "217.als");
- talk_bj(_textbj[_lang][19], "BJ19.als");
- talk(_text[_lang][229], "229.als");
+ talk_bj(16);
+ talk_bj(17);
+ talk_bj(18);
+ talk(217);
+ talk_bj(19);
+ talk(229);
pause(5);
lleva_al_hare(114, 170);
sentido_hare = 3;
- talk(_text[_lang][431], "431.als");
- talk_bj(_textbj[_lang][20], "BJ20.als");
+ talk(431);
+ talk_bj(20);
sentido_hare = 2;
pause(4);
- talk(_text[_lang][438], "438.als");
+ talk(438);
sitio_x = 120;
sitio_y = 157;
anda_a_objeto = 1;
sentido_final = 1;
empieza_andar();
- talk_bj(_textbj[_lang][21], "BJ21.als");
+ talk_bj(21);
for (;;) {
if (hare_se_mueve == 0)
@@ -1877,7 +1892,7 @@ void DrasculaEngine::animation_1_5() {
}
sentido_hare = 1;
- talk(_text[_lang][229], "229.als");
+ talk(229);
flags[0] = 1;
}
@@ -1886,11 +1901,11 @@ void DrasculaEngine::animation_1_5() {
}
void DrasculaEngine::animation_2_5() {
- talk_bj(_textbj[_lang][22], "BJ22.als");
+ talk_bj(22);
}
void DrasculaEngine::animation_3_5() {
- talk_bj(_textbj[_lang][23], "BJ23.als");
+ talk_bj(23);
pickObject(10);
rompo_y_salgo = 1;
}
@@ -1986,8 +2001,8 @@ void DrasculaEngine::animation_5_5(){
}
updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1);
- comienza_sound("s1.als");
- fin_sound();
+ playSound("s1.als");
+ stopSound();
loadPic("99.alg");
decompressPic(dir_hare_fondo, 1);
@@ -2063,7 +2078,7 @@ void DrasculaEngine::animation_12_5() {
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(27);
anima("rayo1.bin", 23);
- comienza_sound("s5.als");
+ playSound("s5.als");
anima("rayo2.bin", 17);
sentido_hare = 1;
updateRoom();
@@ -2073,9 +2088,9 @@ void DrasculaEngine::animation_12_5() {
for (color = 0; color < 255; color++)
for (componente = 0; componente < 3; componente++) {
- palFondo1[color][componente] = palJuego[color][componente];
- palFondo2[color][componente] = palJuego[color][componente];
- palFondo3[color][componente] = palJuego[color][componente];
+ palFondo1[color][componente] = gamePalette[color][componente];
+ palFondo2[color][componente] = gamePalette[color][componente];
+ palFondo3[color][componente] = gamePalette[color][componente];
}
for (fundido = 1; fundido >= 0; fundido--) {
@@ -2114,13 +2129,13 @@ void DrasculaEngine::animation_12_5() {
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
- fin_sound_corte();
+ stopSound_corte();
for (frame = 0; frame < 15; frame++) {
if (frame == 2 || frame == 4 || frame == 7 || frame == 9)
setPalette((byte *)&palFondo1);
else if (frame == 1 || frame == 5)
- setPalette((byte *)&palJuego);
+ setPalette((byte *)&gamePalette);
else
setPalette((byte *)&palFondo2);
@@ -2138,9 +2153,9 @@ void DrasculaEngine::animation_12_5() {
flags[1] = 1;
animation_13_5();
- comienza_sound("s1.als");
+ playSound("s1.als");
hipo(12);
- fin_sound();
+ stopSound();
loadPic("99.alg");
decompressPic(dir_hare_fondo, 1);
@@ -2204,19 +2219,19 @@ void DrasculaEngine::animation_13_5() {
void DrasculaEngine::animation_14_5() {
flags[11] = 1;
- comienza_sound("s3.als");
+ playSound("s3.als");
updateRoom();
updateScreen(0, 0, 0,0 , 320, 200, dir_zona_pantalla);
- fin_sound();
+ stopSound();
pause(17);
sentido_hare = 3;
talk(_text[_lang][246],"246.als");
lleva_al_hare(89, 160);
flags[10] = 1;
- comienza_sound("s7.als");
+ playSound("s7.als");
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
+ stopSound();
pause(14);
sentido_hare = 3;
updateRoom();
@@ -2313,6 +2328,10 @@ void DrasculaEngine::animation_1_6() {
talk_dr_dch(_textd[_lang][34], "d34.als");
sentido_dr = 0;
talk_dr_izq(_textd[_lang][35], "d35.als");
+
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
clearRoom();
carga_escoba("102.ald");
activa_pendulo();
@@ -2402,7 +2421,14 @@ void DrasculaEngine::animation_9_6() {
hare_x = -1;
obj_saliendo = 108;
carga_escoba("59.ald");
- strcpy(num_room, "nada.alg");
+ // The room number was originally changed here to "nada.alg",
+ // which is a non-existant file. In reality, this was just a
+ // hack to set the room number to a non-existant one, so that
+ // room sprites do not appear again when the room is refreshed.
+ // We set the room number to -1 for the same purpose.
+ // Also check animation_2_1(), where the same hack was used
+ // by the original
+ roomNumber = -1;
loadPic("nota2.alg");
decompressPic(dir_dibujo1, HALF_PAL);
black();
@@ -2465,12 +2491,12 @@ void DrasculaEngine::animation_9_6() {
}
void DrasculaEngine::animation_10_6() {
- comienza_sound ("s14.als");
+ playSound ("s14.als");
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateRefresh_pre();
copyBackground(164, 85, 155, 48, 113, 114, dir_dibujo3, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
+ stopSound();
talk_taber2(_textt[_lang][23], "t23.als");
flags[7] = 1;
}
@@ -2520,12 +2546,15 @@ void DrasculaEngine::animation_19_6() {
pause(6);
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- comienza_sound("s4.als");
+ playSound("s4.als");
pause(6);
- fin_sound();
+ stopSound();
}
void DrasculaEngine::animation_12_2() {
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an12.alg");
decompressPic(dir_hare_dch, 1);
@@ -2552,6 +2581,9 @@ void DrasculaEngine::animation_12_2() {
talk_pianista(_textp[_lang][5], "P5.als");
conversa("op_1.cal");
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
flags[11] = 0;
loadPic("974.alg");
decompressPic(dir_hare_dch, 1);
@@ -2560,6 +2592,9 @@ void DrasculaEngine::animation_12_2() {
void DrasculaEngine::animation_26_2() {
int n, x = 0;
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an12.alg");
decompressPic(dir_hare_dch, 1);
@@ -2606,11 +2641,11 @@ void DrasculaEngine::animation_26_2() {
updateScreen(225, 113, 225, 113, 50, 59, dir_zona_pantalla);
x = x + 50;
if (n == 2)
- comienza_sound("s9.als");
+ playSound("s9.als");
pause(3);
}
- fin_sound_corte();
+ stopSound_corte();
x = 0;
for (n = 0; n < 6; n++) {
x++;
@@ -2623,6 +2658,9 @@ void DrasculaEngine::animation_26_2() {
pickObject(11);
resta_objeto(12);
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
flags[11] = 0;
flags[39] = 1;
loadPic("974.alg");
@@ -2631,6 +2669,9 @@ void DrasculaEngine::animation_26_2() {
}
void DrasculaEngine::animation_11_2() {
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an11y13.alg");
decompressPic(dir_hare_dch, 1);
@@ -2644,6 +2685,9 @@ void DrasculaEngine::animation_11_2() {
pause(40);
talk_tabernero("No, nada", "d82.als");
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
loadPic("974.alg");
decompressPic(dir_hare_dch, 1);
}
@@ -2671,8 +2715,8 @@ void DrasculaEngine::animation_13_2() {
}
void DrasculaEngine::animation_18_2() {
- talk(_text[_lang][378], "378.als");
- talk_vbpuerta(_textvb[_lang][4], "VB4.als");
+ talk(378);
+ talk_vbpuerta(4);
conversa("op_3.cal");
}
@@ -2682,15 +2726,15 @@ void DrasculaEngine::animation_22_2() {
sentido_hare=2;
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- comienza_sound("s13.als");
- fin_sound();
+ playSound("s13.als");
+ stopSound();
sentido_hare = 1;
- talk_vbpuerta(_textvb[_lang][1], "VB1.als");
- talk(_text[_lang][375], "375.als");
- talk_vbpuerta(_textvb[_lang][2], "VB2.als");
- talk(_text[_lang][376], "376.als");
- talk_vbpuerta(_textvb[_lang][3], "VB3.als");
+ talk_vbpuerta(1);
+ talk(375);
+ talk_vbpuerta(2);
+ talk(376);
+ talk_vbpuerta(3);
flags[18] = 1;
}
@@ -2703,7 +2747,7 @@ void DrasculaEngine::animation_24_2() {
pause(3);
sentido_hare = 0;
- talk(_text[_lang][356], "356.als");
+ talk(356);
loadPic("an24.alg");
decompressPic(dir_hare_frente, 1);
@@ -2712,7 +2756,7 @@ void DrasculaEngine::animation_24_2() {
flags[21] = 1;
- talk_vb(_textvb[_lang][22], "VB22.als");
+ talk_vb(22);
if (flags[22] == 0)
conversa("op_4.cal");
@@ -2805,7 +2849,7 @@ void DrasculaEngine::animation_34_2() {
}
x = 0;
- comienza_sound("s8.als");
+ playSound("s8.als");
for (n = 0; n < 3; n++) {
x++;
@@ -2814,7 +2858,7 @@ void DrasculaEngine::animation_34_2() {
x = x + 83;
pause(3);
}
- fin_sound();
+ stopSound();
pause(30);
@@ -2829,6 +2873,9 @@ void DrasculaEngine::animation_34_2() {
}
void DrasculaEngine::animation_36_2() {
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
loadPic("an11y13.alg");
decompressPic(dir_hare_dch, 1);
@@ -2840,6 +2887,9 @@ void DrasculaEngine::animation_36_2() {
pause(40);
talk_tabernero("No, nada", "d82.als");
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
loadPic("974.alg");
decompressPic(dir_hare_dch, 1);
}
@@ -3166,7 +3216,7 @@ void DrasculaEngine::animation_5_2() {
pause(3);
}
- comienza_sound("s1.als");
+ playSound("s1.als");
x = 0;
@@ -3177,7 +3227,7 @@ void DrasculaEngine::animation_5_2() {
x = x + 52;
pause(3);
}
- fin_sound_corte();
+ stopSound_corte();
x = 0;
@@ -3207,6 +3257,9 @@ void DrasculaEngine::animation_6_2() {
stopMusic();
flags[9] = 1;
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
clearRoom();
loadPic("ciego1.alg");
decompressPic(dir_dibujo1, HALF_PAL);
@@ -3251,6 +3304,9 @@ void DrasculaEngine::animation_6_2() {
decompressPic(dir_hare_fondo, 1);
withoutVerb();
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
flags[9] = 0;
}
@@ -3274,6 +3330,9 @@ void DrasculaEngine::animation_33_2() {
loadPic("ciego5.alg");
decompressPic(dir_hare_frente, 1);
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_frente;
+
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
@@ -3307,6 +3366,9 @@ void DrasculaEngine::animation_33_2() {
decompressPic(dir_hare_fondo, 1);
withoutVerb();
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+
flags[33] = 1;
flags[9] = 0;
}
@@ -3400,10 +3462,9 @@ void DrasculaEngine::animation_5_4(){
}
void DrasculaEngine::animation_6_4() {
- char room[13];
+ int prevRoom = roomNumber;
- strcpy(room, num_room);
- strcpy(num_room, "26.alg");
+ roomNumber = 26;
clearRoom();
loadPic("26.alg");
decompressPic(dir_dibujo1, HALF_PAL);
@@ -3419,13 +3480,15 @@ void DrasculaEngine::animation_6_4() {
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(40);
talk_igor_frente(_texti[_lang][26], "I26.als");
- strcpy(num_room, room);
+ roomNumber = prevRoom;
clearRoom();
loadPic("96.alg");
decompressPic(dir_hare_frente, 1);
loadPic(roomDisk);
decompressPic(dir_dibujo3, 1);
- loadPic(num_room);
+ char rm[20];
+ sprintf(rm, "%i.alg", roomNumber);
+ loadPic(rm);
decompressPic(dir_dibujo1, HALF_PAL);
withoutVerb();
updateRoom();
diff --git a/engines/drascula/detection.cpp b/engines/drascula/detection.cpp
index 80ea4f0eab..b3d8d964c8 100644
--- a/engines/drascula/detection.cpp
+++ b/engines/drascula/detection.cpp
@@ -58,6 +58,10 @@ uint16 DrasculaEngine::getVersion() const {
return _gameDescription->version;
}
+Common::Language DrasculaEngine::getLanguage() const {
+ return _gameDescription->desc.language;
+}
+
}
static const PlainGameDescriptor drasculaGames[] = {
@@ -75,7 +79,7 @@ static const DrasculaGameDescription gameDescriptions[] = {
{
"drascula",
0,
- AD_ENTRY1("14.ald", "09b2735953edcd43af115c65ae00b10e"),
+ AD_ENTRY1s("14.ald", "09b2735953edcd43af115c65ae00b10e", 1595),
Common::EN_ANY,
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
@@ -85,13 +89,13 @@ static const DrasculaGameDescription gameDescriptions[] = {
0,
0,
},
-/*
+
{
// Drascula Spanish version
{
"drascula",
0,
- AD_ENTRY1("14.ald", "0746ed1a5cc8d9728f790c29813f4b43"),
+ AD_ENTRY1s("14.ald", "0746ed1a5cc8d9728f790c29813f4b43", 23059),
Common::ES_ESP,
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
@@ -100,7 +104,55 @@ static const DrasculaGameDescription gameDescriptions[] = {
0,
0,
0,
- },*/
+ },
+
+ {
+ // Drascula German version
+ {
+ "drascula",
+ 0,
+ AD_ENTRY1s("14.ald", "72e46089033d56bad1c179ac36e2a9d2", 610),
+ Common::DE_DEU,
+ Common::kPlatformPC,
+ Common::ADGF_NO_FLAGS
+ },
+ 0,
+ 0,
+ 0,
+ 0,
+ },
+
+ {
+ // Drascula French version
+ {
+ "drascula",
+ 0,
+ AD_ENTRY1s("14.ald", "eeeee96b82169003630e08992248296c", 608),
+ Common::FR_FRA,
+ Common::kPlatformPC,
+ Common::ADGF_NO_FLAGS
+ },
+ 0,
+ 0,
+ 0,
+ 0,
+ },
+
+ {
+ // Drascula Italian version
+ {
+ "drascula",
+ 0,
+ AD_ENTRY1s("14.ald", "02b49a18328d0bf2efe6ba658c9c7a1d", 2098),
+ Common::IT_ITA,
+ Common::kPlatformPC,
+ Common::ADGF_NO_FLAGS
+ },
+ 0,
+ 0,
+ 0,
+ 0,
+ },
{ AD_TABLE_END_MARKER, 0, 0, 0, 0 }
};
@@ -182,7 +234,8 @@ const Common::ADGameDescription *DrasculaMetaEngine::fallbackDetect(const FSList
Drascula::g_fallbackDesc.features = 0;
Drascula::g_fallbackDesc.version = 0;
- return (const Common::ADGameDescription *)&Drascula::g_fallbackDesc;
+ //return (const Common::ADGameDescription *)&Drascula::g_fallbackDesc;
+ return NULL;
}
#if PLUGIN_ENABLED_DYNAMIC(DRASCULA)
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp
index d6b1904689..5c274b1ef0 100644
--- a/engines/drascula/drascula.cpp
+++ b/engines/drascula/drascula.cpp
@@ -79,16 +79,30 @@ DrasculaEngine::~DrasculaEngine() {
delete _rnd;
}
-static const int x_obj[44] = {0, X_OBJ1, X_OBJ2, X_OBJ3, X_OBJ4, X_OBJ5, X_OBJ6, X_OBJ7, X_OBJ8, X_OBJ9, X_OBJ10,
- X_OBJ11, X_OBJ12, X_OBJ13, X_OBJ14, X_OBJ15, X_OBJ16, X_OBJ17, X_OBJ18, X_OBJ19, X_OBJ20,
- X_OBJ21, X_OBJ22, X_OBJ23, X_OBJ24, X_OBJ25, X_OBJ26, X_OBJ27, X_OBJ28, X_OBJ29, X_OBJ30,
- X_OBJ31, X_OBJ32, X_OBJ33, X_OBJ34, X_OBJ35, X_OBJ36, X_OBJ37, X_OBJ38, X_OBJ39, X_OBJ40,
- X_OBJ41, X_OBJ42, X_OBJ43};
-static const int y_obj[44] = {0, Y_OBJ1, Y_OBJ2, Y_OBJ3, Y_OBJ4, Y_OBJ5, Y_OBJ6, Y_OBJ7, Y_OBJ8, Y_OBJ9, Y_OBJ10,
- Y_OBJ11, Y_OBJ12, Y_OBJ13, Y_OBJ14, Y_OBJ15, Y_OBJ16, Y_OBJ17, Y_OBJ18, Y_OBJ19, Y_OBJ20,
- Y_OBJ21, Y_OBJ22, Y_OBJ23, Y_OBJ24, Y_OBJ25, Y_OBJ26, Y_OBJ27, Y_OBJ28, Y_OBJ29, Y_OBJ30,
- Y_OBJ31, Y_OBJ32, Y_OBJ33, Y_OBJ34, Y_OBJ35, Y_OBJ36, Y_OBJ37, Y_OBJ38, Y_OBJ39, Y_OBJ40,
- Y_OBJ41, Y_OBJ42, Y_OBJ43};
+struct ItemLocation {
+ int x;
+ int y;
+};
+
+ItemLocation itemLocations[] = {
+ { 0, 0 }, // empty
+ { 5, 10 }, { 50, 10 }, { 95, 10 }, // 1-3
+ { 140, 10 }, { 185, 10 }, { 230, 10 }, // 4-6
+ { 275, 10 }, { 5, 40 }, { 50, 40 }, // 7-9
+ { 95, 40 }, { 140, 40 }, { 185, 40 }, // 10-12
+ { 230, 40 }, { 275, 40 }, { 5, 70 }, // 13-15
+ { 50, 70 }, { 95, 70 }, { 140, 70 }, // 16-18
+ { 185, 70 }, { 230, 70 }, { 275, 70 }, // 19-21
+ { 5, 100 }, { 50, 100 }, { 95, 100 }, // 22-24
+ { 140, 100 }, { 185, 100 }, { 230, 100 }, // 25-27
+ { 275, 100 }, { 5, 130 }, { 50, 130 }, // 28-30
+ { 95, 130 }, { 140, 130 }, { 185, 130 }, // 31-33
+ { 230, 130 }, { 275, 130 }, { 5, 160 }, // 34-36
+ { 50, 160 }, { 95, 160 }, { 140, 160 }, // 37-39
+ { 185, 160 }, { 230, 160 }, { 275, 160 }, // 40-42
+ { 275, 160 } // 43
+};
+
static const int x_pol[44] = {0, 1, 42, 83, 124, 165, 206, 247, 83, 1, 206,
1, 42, 83, 124, 165, 206, 247, 83, 1, 206,
247, 83, 165, 1, 206, 42, 124, 83, 1, 247,
@@ -114,6 +128,27 @@ int DrasculaEngine::init() {
_system->initSize(320, 200);
_system->endGFXTransaction();
+ switch (getLanguage()) {
+ case Common::EN_ANY:
+ _lang = 0;
+ break;
+ case Common::ES_ESP:
+ _lang = 1;
+ break;
+ case Common::DE_DEU:
+ _lang = 2;
+ break;
+ case Common::FR_FRA:
+ _lang = 3;
+ break;
+ case Common::IT_ITA:
+ _lang = 4;
+ break;
+ default:
+ warning("Unknown game language. Falling back to English");
+ _lang = 0;
+ }
+
return 0;
}
@@ -137,7 +172,7 @@ int DrasculaEngine::go() {
step_x = PASO_HARE_X; step_y = PASO_HARE_Y;
alto_hare = CHARACTER_HEIGHT; ancho_hare = CHARACTER_WIDTH; alto_pies = PIES_HARE;
alto_talk = ALTO_TALK_HARE; ancho_talk = ANCHO_TALK_HARE;
- hay_respuesta = 0;
+ hay_answer = 0;
conta_ciego_vez = 0;
cambio_de_color = 0;
rompo_y_salgo = 0;
@@ -334,7 +369,7 @@ void DrasculaEngine::paleta_hare() {
for (color = 235; color < 253; color++)
for (componente = 0; componente < 3; componente++)
- palHare[color][componente] = palJuego[color][componente];
+ palHare[color][componente] = gamePalette[color][componente];
}
void DrasculaEngine::hare_oscuro() {
@@ -342,7 +377,7 @@ void DrasculaEngine::hare_oscuro() {
for (color = 235; color < 253; color++ )
for (componente = 0; componente < 3; componente++)
- palJuego[color][componente] = palHareOscuro[color][componente];
+ gamePalette[color][componente] = palHareOscuro[color][componente];
updatePalette();
}
@@ -351,9 +386,9 @@ void DrasculaEngine::setRGB(byte *dir_lectura, int plt) {
int x, cnt = 0;
for (x = 0; x < plt; x++) {
- palJuego[x][0] = dir_lectura[cnt++] / 4;
- palJuego[x][1] = dir_lectura[cnt++] / 4;
- palJuego[x][2] = dir_lectura[cnt++] / 4;
+ gamePalette[x][0] = dir_lectura[cnt++] / 4;
+ gamePalette[x][1] = dir_lectura[cnt++] / 4;
+ gamePalette[x][2] = dir_lectura[cnt++] / 4;
}
updatePalette();
}
@@ -374,7 +409,7 @@ void DrasculaEngine::black() {
}
void DrasculaEngine::updatePalette() {
- setPalette((byte *)&palJuego);
+ setPalette((byte *)&gamePalette);
}
void DrasculaEngine::setPalette(byte *PalBuf) {
@@ -393,10 +428,9 @@ void DrasculaEngine::setPalette(byte *PalBuf) {
void DrasculaEngine::copyBackground(int xorg, int yorg, int xdes, int ydes, int width,
int height, byte *src, byte *dest) {
- int x;
dest += xdes + ydes * 320;
src += xorg + yorg * 320;
- for (x = 0; x < height; x++) {
+ for (int x = 0; x < height; x++) {
memcpy(dest, src, width);
dest += 320;
src += 320;
@@ -450,12 +484,11 @@ void DrasculaEngine::copyRectClip(int *Array, byte *src, byte *dest) {
}
void DrasculaEngine::updateScreen(int xorg, int yorg, int xdes, int ydes, int width, int height, byte *buffer) {
- int x;
byte *ptr = VGA;
ptr += xdes + ydes * 320;
buffer += xorg + yorg * 320;
- for (x = 0; x < height; x++) {
+ for (int x = 0; x < height; x++) {
memcpy(ptr, buffer, width);
ptr += 320;
buffer += 320;
@@ -468,7 +501,10 @@ void DrasculaEngine::updateScreen(int xorg, int yorg, int xdes, int ydes, int wi
bool DrasculaEngine::escoba() {
int n;
- dir_texto = dir_mesa;
+ if (_lang == kSpanish)
+ dir_texto = dir_hare_dch;
+ else
+ dir_texto = dir_mesa;
previousMusic = -1;
@@ -481,7 +517,7 @@ bool DrasculaEngine::escoba() {
}
for (n = 1; n < 43; n++)
- objetos_que_tengo[n] = 0;
+ inventoryObjects[n] = 0;
for (n = 0; n < NUM_FLAGS; n++)
flags[n] = 0;
@@ -493,7 +529,7 @@ bool DrasculaEngine::escoba() {
}
for (n = 1; n < 7; n++)
- objetos_que_tengo[n] = n;
+ inventoryObjects[n] = n;
if (num_ejec == 1) {
pickObject(28);
@@ -609,11 +645,11 @@ bucles:
}
if (num_ejec == 2) {
- if ((!strcmp(num_room, "3.alg")) && (hare_x == 279) && (hare_y + alto_hare == 101))
+ if (roomNumber == 3 && (hare_x == 279) && (hare_y + alto_hare == 101))
animation_1_2();
- else if ((!strcmp(num_room, "14.alg")) && (hare_x == 214) && (hare_y + alto_hare == 121))
+ else if (roomNumber == 14 && (hare_x == 214) && (hare_y + alto_hare == 121))
lleva_al_hare(190, 130);
- else if ((!strcmp(num_room, "14.alg")) && (hare_x == 246) && (hare_y + alto_hare == 112))
+ else if (roomNumber == 14 && (hare_x == 246) && (hare_y + alto_hare == 112))
lleva_al_hare(190, 130);
}
@@ -633,20 +669,20 @@ bucles:
if (menu_scr == 0 && lleva_objeto == 1)
comprueba_objetos();
- if (boton_dch == 1 && menu_scr == 1) {
+ if (button_dch == 1 && menu_scr == 1) {
delay(100);
if (num_ejec == 2)
loadPic(fondo_y_menu);
else
loadPic("99.alg");
decompressPic(dir_hare_fondo, 1);
- setPalette((byte *)&palJuego);
+ setPalette((byte *)&gamePalette);
menu_scr = 0;
espera_soltar();
if (num_ejec != 3)
cont_sv = 0;
}
- if (boton_dch == 1 && menu_scr == 0) {
+ if (button_dch == 1 && menu_scr == 0) {
delay(100);
hare_se_mueve = 0;
if (sentido_hare == 2)
@@ -667,25 +703,25 @@ bucles:
cont_sv = 0;
}
- if (boton_izq == 1 && menu_bar == 1) {
+ if (button_izq == 1 && menu_bar == 1) {
delay(100);
elige_en_barra();
if (num_ejec != 3)
cont_sv = 0;
- } else if (boton_izq == 1 && lleva_objeto == 0) {
+ } else if (button_izq == 1 && lleva_objeto == 0) {
delay(100);
if (comprueba1())
return true;
if (num_ejec != 3)
cont_sv = 0;
- } else if (boton_izq == 1 && lleva_objeto == 1) {
+ } else if (button_izq == 1 && lleva_objeto == 1) {
if (comprueba2())
return true;
if (num_ejec != 3)
cont_sv = 0;
}
- if (y_raton < 24 && menu_scr == 0)
+ if (mouseY < 24 && menu_scr == 0)
menu_bar = 1;
else
menu_bar = 0;
@@ -746,7 +782,7 @@ bucles:
return false;
if (num_ejec != 3)
cont_sv = 0;
- } else if (num_ejec == 6 && key == Common::KEYCODE_0 && !strcmp(num_room, "61.alg")) {
+ } else if (num_ejec == 6 && key == Common::KEYCODE_0 && roomNumber == 61) {
loadPic("alcbar.alg");
decompressPic(dir_dibujo1, 255);
} else if (cont_sv == 1500) {
@@ -780,32 +816,29 @@ void DrasculaEngine::pickObject(int objeto) {
void DrasculaEngine::chooseObject(int objeto) {
if (num_ejec == 5) {
- if (lleva_objeto == 1 && menu_scr == 0 && objeto_que_lleva != 16)
- suma_objeto(objeto_que_lleva);
+ if (lleva_objeto == 1 && menu_scr == 0 && pickedObject != 16)
+ suma_objeto(pickedObject);
} else {
if (lleva_objeto == 1 && menu_scr == 0)
- suma_objeto(objeto_que_lleva);
+ suma_objeto(pickedObject);
}
copyBackground(x1d_menu[objeto], y1d_menu[objeto], 0, 0, OBJWIDTH,OBJHEIGHT, dir_hare_fondo, dir_dibujo3);
lleva_objeto = 1;
- objeto_que_lleva = objeto;
+ pickedObject = objeto;
}
int DrasculaEngine::resta_objeto(int osj) {
- int h, q = 0;
+ int result = 1;
- for (h = 1; h < 43; h++) {
- if (objetos_que_tengo[h] == osj) {
- objetos_que_tengo[h] = 0;
- q = 1;
+ for (int h = 1; h < 43; h++) {
+ if (inventoryObjects[h] == osj) {
+ inventoryObjects[h] = 0;
+ result = 0;
break;
}
}
- if (q == 1)
- return 0;
- else
- return 1;
+ return result;
}
void DrasculaEngine::withoutVerb() {
@@ -813,11 +846,11 @@ void DrasculaEngine::withoutVerb() {
if (menu_scr == 1)
c = 0;
if (num_ejec == 5) {
- if (lleva_objeto == 1 && objeto_que_lleva != 16)
- suma_objeto(objeto_que_lleva);
+ if (lleva_objeto == 1 && pickedObject != 16)
+ suma_objeto(pickedObject);
} else {
if (lleva_objeto == 1)
- suma_objeto(objeto_que_lleva);
+ suma_objeto(pickedObject);
}
copyBackground(0, c, 0, 0, OBJWIDTH,OBJHEIGHT, dir_hare_fondo, dir_dibujo3);
@@ -852,9 +885,7 @@ static char *getLine(Common::File *fp, char *buf, int len) {
c = ~fp->readByte();
if (c == '\r')
continue;
- if (c == '\n')
- break;
- if (b - buf >= (len - 1))
+ if (c == '\n' || b - buf >= (len - 1))
break;
*b++ = c;
}
@@ -886,8 +917,7 @@ void DrasculaEngine::carga_escoba(const char *nom_fich) {
}
int size = ald->size();
getLine(ald, buffer, size);
- sscanf(buffer, "%s", num_room);
- strcat(num_room, ".alg");
+ roomNumber = atoi(buffer);
getLine(ald, buffer, size);
sscanf(buffer, "%d", &roomMusic);
@@ -1024,7 +1054,9 @@ martini:
loadPic(roomDisk);
decompressPic(dir_dibujo3, 1);
- loadPic(num_room);
+ char rm[20];
+ sprintf(rm, "%i.alg", roomNumber);
+ loadPic(rm);
decompressPic(dir_dibujo1, HALF_PAL);
copyBackground(0, 171, 0, 0, OBJWIDTH, OBJHEIGHT, dir_hare_fondo, dir_dibujo3);
@@ -1056,14 +1088,14 @@ martini:
}
}
- if (!strcmp(num_room, "24.alg")) {
+ if (roomNumber == 24) {
for (l = suelo_y1 - 1; l > 74; l--) {
factor_red[l] = (int)(far - pequegnez);
pequegnez = pequegnez + chiquez;
}
}
- if (num_ejec == 5 && !strcmp(num_room, "54.alg")) {
+ if (num_ejec == 5 && roomNumber == 54) {
for (l = suelo_y1 - 1; l > 84; l--) {
factor_red[l] = (int)(far - pequegnez);
pequegnez = pequegnez + chiquez;
@@ -1101,13 +1133,13 @@ martini:
isDoor[7] = 0;
if (num_ejec == 2) {
- if (!strcmp(num_room, "14.alg") && flags[39] == 1)
+ if (roomNumber == 14 && flags[39] == 1)
roomMusic = 16;
- else if (!strcmp(num_room, "15.alg") && flags[39] == 1)
+ else if (roomNumber == 15 && flags[39] == 1)
roomMusic = 16;
- if (!strcmp(num_room, "14.alg") && flags[5] == 1)
+ if (roomNumber == 14 && flags[5] == 1)
roomMusic = 0;
- else if (!strcmp(num_room, "15.alg") && flags[5] == 1)
+ else if (roomNumber == 15 && flags[5] == 1)
roomMusic = 0;
if (previousMusic != roomMusic && roomMusic != 0)
@@ -1120,21 +1152,21 @@ martini:
}
if (num_ejec == 2) {
- if ((!strcmp(num_room, "9.alg")) || (strcmp(num_room, "2.alg")) || (!strcmp(num_room, "14.alg")) || (!strcmp(num_room, "18.alg")))
+ if (roomNumber == 9 || roomNumber == 2 || roomNumber == 14 || roomNumber == 18)
conta_ciego_vez = vez();
}
if (num_ejec == 4) {
- if (!strcmp(num_room, "26.alg"))
+ if (roomNumber == 26)
conta_ciego_vez = vez();
}
- if (num_ejec == 4 && !strcmp(num_room, "24.alg") && flags[29] == 1)
+ if (num_ejec == 4 && roomNumber == 24 && flags[29] == 1)
animation_7_4();
if (num_ejec == 5) {
- if (!strcmp(num_room, "45.alg"))
+ if (roomNumber == 45)
hare_se_ve = 0;
- if (!strcmp(num_room, "49.alg") && flags[7] == 0)
+ if (roomNumber == 49 && flags[7] == 0)
animation_4_5();
}
@@ -1190,7 +1222,7 @@ void DrasculaEngine::mueve_cursor() {
} else if (menu_scr == 0 && _color != LIGHT_GREEN)
color_abc(LIGHT_GREEN);
if (hay_nombre == 1 && menu_scr == 0)
- centra_texto(texto_nombre, x_raton, y_raton);
+ centra_texto(texto_nombre, mouseX, mouseY);
if (menu_scr == 1)
menu_sin_volcar();
else if (menu_bar == 1)
@@ -1198,8 +1230,8 @@ void DrasculaEngine::mueve_cursor() {
pos_cursor[0] = 0;
pos_cursor[1] = 0;
- pos_cursor[2] = x_raton - 20;
- pos_cursor[3] = y_raton - 17;
+ pos_cursor[2] = mouseX - 20;
+ pos_cursor[3] = mouseY - 17;
pos_cursor[4] = OBJWIDTH;
pos_cursor[5] = OBJHEIGHT;
copyRectClip(pos_cursor, dir_dibujo3, dir_zona_pantalla);
@@ -1209,8 +1241,8 @@ void DrasculaEngine::comprueba_objetos() {
int l, veo = 0;
for (l = 0; l < numRoomObjs; l++) {
- if (x_raton > x1[l] && y_raton > y1[l]
- && x_raton < x2[l] && y_raton < y2[l]
+ if (mouseX > x1[l] && mouseY > y1[l]
+ && mouseX < x2[l] && mouseY < y2[l]
&& visible[l] == 1 && isDoor[l] == 0) {
strcpy(texto_nombre, objName[l]);
hay_nombre = 1;
@@ -1219,15 +1251,15 @@ void DrasculaEngine::comprueba_objetos() {
}
if (num_ejec == 2) {
- if (x_raton > hare_x + 2 && y_raton > hare_y + 2
- && x_raton < hare_x + ancho_hare - 2 && y_raton < hare_y + alto_hare - 2) {
+ if (mouseX > hare_x + 2 && mouseY > hare_y + 2
+ && mouseX < hare_x + ancho_hare - 2 && mouseY < hare_y + alto_hare - 2) {
strcpy(texto_nombre, "hacker");
hay_nombre = 1;
veo = 1;
}
} else {
- if (x_raton > hare_x + 2 && y_raton > hare_y + 2
- && x_raton < hare_x + ancho_hare - 2 && y_raton < hare_y + alto_hare - 2 && veo == 0) {
+ if (mouseX > hare_x + 2 && mouseY > hare_y + 2
+ && mouseX < hare_x + ancho_hare - 2 && mouseY < hare_y + alto_hare - 2 && veo == 0) {
strcpy(texto_nombre, "hacker");
hay_nombre = 1;
veo = 1;
@@ -1250,7 +1282,7 @@ void DrasculaEngine::elige_en_barra() {
int n, num_verbo = -1;
for (n = 0; n < 7; n++)
- if (x_raton > x_barra[n] && x_raton < x_barra[n + 1])
+ if (mouseX > x_barra[n] && mouseX < x_barra[n + 1])
num_verbo = n;
if (num_verbo < 1)
@@ -1266,8 +1298,8 @@ bool DrasculaEngine::comprueba1() {
saca_objeto();
else {
for (l = 0; l < numRoomObjs; l++) {
- if (x_raton >= x1[l] && y_raton >= y1[l]
- && x_raton <= x2[l] && y_raton <= y2[l] && rompo == 0) {
+ if (mouseX >= x1[l] && mouseY >= y1[l]
+ && mouseX <= x2[l] && mouseY <= y2[l] && rompo == 0) {
if (sal_de_la_habitacion(l))
return true;
if (rompo == 1)
@@ -1275,13 +1307,13 @@ bool DrasculaEngine::comprueba1() {
}
}
- if (x_raton > hare_x && y_raton > hare_y
- && x_raton < hare_x + ancho_hare && y_raton < hare_y + alto_hare)
+ if (mouseX > hare_x && mouseY > hare_y
+ && mouseX < hare_x + ancho_hare && mouseY < hare_y + alto_hare)
rompo = 1;
for (l = 0; l < numRoomObjs; l++) {
- if (x_raton > x1[l] && y_raton > y1[l]
- && x_raton < x2[l] && y_raton < y2[l] && rompo == 0) {
+ if (mouseX > x1[l] && mouseY > y1[l]
+ && mouseX < x2[l] && mouseY < y2[l] && rompo == 0) {
sitio_x = sitiobj_x[l];
sitio_y = sitiobj_y[l];
sentido_final = sentidobj[l];
@@ -1292,8 +1324,8 @@ bool DrasculaEngine::comprueba1() {
}
if (rompo == 0) {
- sitio_x = x_raton;
- sitio_y = y_raton;
+ sitio_x = mouseX;
+ sitio_y = mouseY;
if (sitio_x < suelo_x1)
sitio_x = suelo_x1;
@@ -1324,8 +1356,8 @@ bool DrasculaEngine::comprueba2() {
return true;
} else {
for (l = 0; l < numRoomObjs; l++) {
- if (x_raton > x1[l] && y_raton > y1[l]
- && x_raton < x2[l] && y_raton < y2[l] && visible[l] == 1) {
+ if (mouseX > x1[l] && mouseY > y1[l]
+ && mouseX < x2[l] && mouseY < y2[l] && visible[l] == 1) {
sentido_final = sentidobj[l];
anda_a_objeto = 1;
lleva_al_hare(sitiobj_x[l], sitiobj_y[l]);
@@ -1362,20 +1394,20 @@ void DrasculaEngine::updateEvents() {
_keyPressed.keycode = Common::KEYCODE_INVALID;
break;
case Common::EVENT_MOUSEMOVE:
- x_raton = event.mouse.x;
- y_raton = event.mouse.y;
+ mouseX = event.mouse.x;
+ mouseY = event.mouse.y;
break;
case Common::EVENT_LBUTTONDOWN:
- boton_izq = 1;
+ button_izq = 1;
break;
case Common::EVENT_LBUTTONUP:
- boton_izq = 0;
+ button_izq = 0;
break;
case Common::EVENT_RBUTTONDOWN:
- boton_dch = 1;
+ button_dch = 1;
break;
case Common::EVENT_RBUTTONUP:
- boton_dch = 0;
+ button_dch = 0;
break;
case Common::EVENT_QUIT:
// TODO
@@ -1394,17 +1426,17 @@ void DrasculaEngine::elige_verbo(int verbo) {
if (menu_scr == 1)
c = 0;
if (num_ejec == 5) {
- if (lleva_objeto == 1 && objeto_que_lleva != 16)
- suma_objeto(objeto_que_lleva);
+ if (lleva_objeto == 1 && pickedObject != 16)
+ suma_objeto(pickedObject);
} else {
if (lleva_objeto == 1)
- suma_objeto(objeto_que_lleva);
+ suma_objeto(pickedObject);
}
copyBackground(OBJWIDTH * verbo, c, 0, 0, OBJWIDTH, OBJHEIGHT, dir_hare_fondo, dir_dibujo3);
lleva_objeto = 1;
- objeto_que_lleva = verbo;
+ pickedObject = verbo;
}
void DrasculaEngine::mesa() {
@@ -1432,35 +1464,35 @@ void DrasculaEngine::mesa() {
MirarRaton();
- if (boton_dch == 1) {
+ if (button_dch == 1) {
delay(100);
break;
}
- if (boton_izq == 1) {
+ if (button_izq == 1) {
delay(100);
- if (x_raton > 80 && x_raton < 121) {
+ if (mouseX > 80 && mouseX < 121) {
int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16;
- if (y_raton < nivel_master && vol < 15)
+ if (mouseY < nivel_master && vol < 15)
vol++;
- if (y_raton > nivel_master && vol > 0)
+ if (mouseY > nivel_master && vol > 0)
vol--;
_mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, vol * 16);
}
- if (x_raton > 136 && x_raton < 178) {
+ if (mouseX > 136 && mouseX < 178) {
int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16;
- if (y_raton < nivel_voc && vol < 15)
+ if (mouseY < nivel_voc && vol < 15)
vol++;
- if (y_raton > nivel_voc && vol > 0)
+ if (mouseY > nivel_voc && vol > 0)
vol--;
_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, vol * 16);
}
- if (x_raton > 192 && x_raton < 233) {
+ if (mouseX > 192 && mouseX < 233) {
int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16;
- if (y_raton < nivel_cd && vol < 15)
+ if (mouseY < nivel_cd && vol < 15)
vol++;
- if (y_raton > nivel_cd && vol > 0)
+ if (mouseY > nivel_cd && vol > 0)
vol--;
_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, vol * 16);
}
@@ -1473,22 +1505,24 @@ void DrasculaEngine::mesa() {
bool DrasculaEngine::saves() {
char nombres[10][23];
- char fichero[13];
+ char fichero[50];
+ char fileEpa[50];
int n, n2, num_sav = 0, y = 27;
Common::InSaveFile *sav;
clearRoom();
- if (!(sav = _saveFileMan->openForLoading("saves.epa"))) {
+ snprintf(fileEpa, 50, "%s.epa", _targetName.c_str());
+ if (!(sav = _saveFileMan->openForLoading(fileEpa))) {
Common::OutSaveFile *epa;
- if (!(epa = _saveFileMan->openForSaving("saves.epa")))
- error("Can't open saves.epa file.");
+ if (!(epa = _saveFileMan->openForSaving(fileEpa)))
+ error("Can't open %s file", fileEpa);
for (n = 0; n < NUM_SAVES; n++)
epa->writeString("*\n");
epa->finalize();
delete epa;
- if (!(sav = _saveFileMan->openForLoading("saves.epa"))) {
- error("Can't open saves.epa file.");
+ if (!(sav = _saveFileMan->openForLoading(fileEpa))) {
+ error("Can't open %s file", fileEpa);
}
}
for (n = 0; n < NUM_SAVES; n++)
@@ -1514,10 +1548,10 @@ bool DrasculaEngine::saves() {
MirarRaton();
- if (boton_izq == 1) {
+ if (button_izq == 1) {
delay(100);
for (n = 0; n < NUM_SAVES; n++) {
- if (x_raton > 115 && y_raton > y + (9 * n) && x_raton < 115 + 175 && y_raton < y + 10 + (9 * n)) {
+ if (mouseX > 115 && mouseY > y + (9 * n) && mouseX < 115 + 175 && mouseY < y + 10 + (9 * n)) {
strcpy(select, nombres[n]);
if (strcmp(select, "*"))
@@ -1526,11 +1560,11 @@ bool DrasculaEngine::saves() {
introduce_nombre();
strcpy(nombres[n], select);
if (hay_seleccion == 1) {
- sprintf(fichero, "gsave%02d", n + 1);
+ snprintf(fichero, 50, "%s%02d", _targetName.c_str(), n + 1);
para_grabar(fichero);
Common::OutSaveFile *tsav;
- if (!(tsav = _saveFileMan->openForSaving("saves.epa"))) {
- error("Can't open saves.epa file.");
+ if (!(tsav = _saveFileMan->openForSaving(fileEpa))) {
+ error("Can't open %s file", fileEpa);
}
for (n = 0; n < NUM_SAVES; n++) {
tsav->writeString(nombres[n]);
@@ -1548,13 +1582,13 @@ bool DrasculaEngine::saves() {
y = y + 9;
}
if (hay_seleccion == 1) {
- sprintf(fichero, "gsave%02d", n + 1);
+ snprintf(fichero, 50, "%s%02d", _targetName.c_str(), n + 1);
}
num_sav = n;
}
}
- if (x_raton > 117 && y_raton > 15 && x_raton < 295 && y_raton < 24 && hay_seleccion == 1) {
+ if (mouseX > 117 && mouseY > 15 && mouseX < 295 && mouseY < 24 && hay_seleccion == 1) {
introduce_nombre();
strcpy(nombres[num_sav], select);
print_abc(select, 117, 15);
@@ -1565,15 +1599,15 @@ bool DrasculaEngine::saves() {
}
}
- if (x_raton > 125 && y_raton > 123 && x_raton < 199 && y_raton < 149 && hay_seleccion == 1) {
+ if (mouseX > 125 && mouseY > 123 && mouseX < 199 && mouseY < 149 && hay_seleccion == 1) {
if (!para_cargar(fichero))
return false;
break;
- } else if (x_raton > 208 && y_raton > 123 && x_raton < 282 && y_raton < 149 && hay_seleccion == 1) {
+ } else if (mouseX > 208 && mouseY > 123 && mouseX < 282 && mouseY < 149 && hay_seleccion == 1) {
para_grabar(fichero);
Common::OutSaveFile *tsav;
- if (!(tsav = _saveFileMan->openForSaving("saves.epa"))) {
- error("Can't open saves.epa file.");
+ if (!(tsav = _saveFileMan->openForSaving(fileEpa))) {
+ error("Can't open %s file", fileEpa);
}
for (n = 0; n < NUM_SAVES; n++) {
tsav->writeString(nombres[n]);
@@ -1581,7 +1615,7 @@ bool DrasculaEngine::saves() {
}
tsav->finalize();
delete tsav;
- } else if (x_raton > 168 && y_raton > 154 && x_raton < 242 && y_raton < 180)
+ } else if (mouseX > 168 && mouseY > 154 && mouseX < 242 && mouseY < 180)
break;
else if (hay_seleccion == 0) {
print_abc("elige una partida", 117, 15);
@@ -1590,10 +1624,14 @@ bool DrasculaEngine::saves() {
delay(400);
}
y = 26;
+
+ delay(10);
}
clearRoom();
- loadPic(num_room);
+ char rm[20];
+ sprintf(rm, "%i.alg", roomNumber);
+ loadPic(rm);
decompressPic(dir_dibujo1, HALF_PAL);
hay_seleccion = 0;
@@ -1602,11 +1640,11 @@ bool DrasculaEngine::saves() {
void DrasculaEngine::print_abc(const char *said, int x_pantalla, int y_pantalla) {
int pos_texto[8];
- int y_de_letra = 0, x_de_letra = 0, h, longitud;
- longitud = strlen(said);
+ int y_de_letra = 0, x_de_letra = 0, h, length;
+ length = strlen(said);
- for (h = 0; h < longitud; h++) {
- y_de_letra = Y_ABC;
+ for (h = 0; h < length; h++) {
+ y_de_letra = (_lang == kSpanish) ? Y_ABC_ESP : Y_ABC;
int c = toupper(said[h]);
if (c == 'A')
x_de_letra = X_A;
@@ -1660,10 +1698,14 @@ void DrasculaEngine::print_abc(const char *said, int x_pantalla, int y_pantalla)
x_de_letra = X_Y;
else if (c == 'Z')
x_de_letra = X_Z;
+ else if (c == '\245')
+ x_de_letra = X_GN;
+ else if (c == '\244')
+ x_de_letra = X_GN;
else if (c == 0xa7 || c == ' ')
x_de_letra = SPACE;
else {
- y_de_letra = Y_SIGNOS;
+ y_de_letra = (_lang == kSpanish) ? Y_SIGNOS_ESP : Y_SIGNOS;
if (c == '.')
x_de_letra = X_DOT;
else if (c == ',')
@@ -1672,7 +1714,7 @@ void DrasculaEngine::print_abc(const char *said, int x_pantalla, int y_pantalla)
x_de_letra = X_HYPHEN;
else if (c == '?')
x_de_letra = X_CIERRA_INTERROGACION;
- else if (c == 0xa8)
+ else if (c == '\250')
x_de_letra = X_ABRE_INTERROGACION;
// else if (c == '\'') // FIXME
// x_de_letra = SPACE; // space for now
@@ -1680,7 +1722,7 @@ void DrasculaEngine::print_abc(const char *said, int x_pantalla, int y_pantalla)
x_de_letra = X_COMILLAS;
else if (c == '!')
x_de_letra = X_CIERRA_EXCLAMACION;
- else if (c == 0xad)
+ else if (c == '\255')
x_de_letra = X_ABRE_EXCLAMACION;
else if (c == ';')
x_de_letra = X_PUNTO_Y_COMA;
@@ -1726,6 +1768,41 @@ void DrasculaEngine::print_abc(const char *said, int x_pantalla, int y_pantalla)
x_de_letra = X_N9;
else if (c == '0')
x_de_letra = X_N0;
+ else y_de_letra=Y_ACENTOS;
+
+ if (c == '\240') x_de_letra=X_A;
+ else if (c =='\202') x_de_letra = X_B;
+ else if (c =='\241') x_de_letra = X_C;
+ else if (c =='\242') x_de_letra = X_D;
+ else if (c =='\243') x_de_letra = X_E;
+ else if (c =='\205') x_de_letra = X_F;
+ else if (c =='\212') x_de_letra = X_G;
+ else if (c =='\215') x_de_letra = X_H;
+ else if (c =='\225') x_de_letra = X_I;
+ else if (c =='\227') x_de_letra = X_J;
+ else if (c =='\203') x_de_letra = X_K;
+ else if (c =='\210') x_de_letra = X_L;
+ else if (c =='\214') x_de_letra = X_M;
+ else if (c =='\223') x_de_letra = X_N;
+ else if (c =='\226') x_de_letra = X_GN;
+ else if (c =='\047') x_de_letra = X_O;
+ else if (c =='\200') x_de_letra = X_P;
+ else if (c =='\207') x_de_letra = X_P;
+ else if (c =='\265') x_de_letra = X_A;
+ else if (c =='\220') x_de_letra = X_B;
+ else if (c =='\326') x_de_letra = X_C;
+ else if (c =='\340') x_de_letra = X_D;
+ else if (c =='\351') x_de_letra = X_E;
+ else if (c =='\267') x_de_letra = X_F;
+ else if (c =='\324') x_de_letra = X_G;
+ else if (c =='\336') x_de_letra = X_H;
+ else if (c =='\343') x_de_letra = X_I;
+ else if (c =='\353') x_de_letra = X_J;
+ else if (c =='\266') x_de_letra = X_K;
+ else if (c =='\322') x_de_letra = X_L;
+ else if (c =='\327') x_de_letra = X_M;
+ else if (c =='\342') x_de_letra = X_N;
+ else if (c =='\352') x_de_letra = X_GN;
}
pos_texto[0] = x_de_letra;
@@ -1774,34 +1851,126 @@ bool DrasculaEngine::confirma_salir() {
void DrasculaEngine::salva_pantallas() {
int xr, yr;
+ byte *copia, *ghost;
+ Common::File file;
+ float coeff = 0, coeff2 = 0;
+ int count = 0;
+ int count2 = 0;
+ int tempLine[320];
+ int tempRow[200];
// FIXME: that part (*.ghost) need RE from efecto.lib file for some gfx special effect
// for now ignore
- return;
clearRoom();
loadPic("sv.alg");
decompressPic(dir_dibujo1, HALF_PAL);
- //TODO inicio_ghost();
- //TODO carga_ghost();
+
+ // inicio_ghost();
+ copia = (byte *)malloc(64000);
+ ghost = (byte *)malloc(65536);
+
+ // carga_ghost();
+ file.open("ghost.drv");
+ if (!file.isOpen())
+ error("Cannot open file ghost.drv");
+
+ file.read(ghost, 65536);
+ file.close();
MirarRaton();
- xr = x_raton;
- yr = y_raton;
+ xr = mouseX;
+ yr = mouseY;
for (;;) {
- //TODO efecto(dir_dibujo1);
+ // efecto(dir_dibujo1);
+
+ memcpy(copia, dir_dibujo1, 64000);
+ coeff += 0.1f;
+ coeff2 = coeff;
+
+ if (++count > 319)
+ count = 0;
+
+ for (int i = 0; i < 320; i++) {
+ tempLine[i] = (int)(sin(coeff2) * 16);
+ coeff2 += 0.02f;
+ if (tempLine[i] < 0)
+ tempLine[i] += 200;
+ if (tempLine[i] > 199)
+ tempLine[i] -= 200;
+ }
+
+ coeff2 = coeff;
+ for (int i = 0; i < 200; i++) {
+ tempRow[i] = (int)(sin(coeff2) * 16);
+ coeff2 += 0.02f;
+ if (tempRow[i] < 0)
+ tempRow[i] += 320;
+ if (tempRow[i] > 319)
+ tempRow[i] -= 320;
+ }
+
+ if (++count2 > 199)
+ count2 = 0;
+
+ int x1_, y1_, off1, off2;
+
+ for (int i = 0; i < 200; i++) {
+ for (int j = 0; j < 320; j++) {
+ x1_ = j + tempRow[i];
+ if (x1_ < 0)
+ x1_ += 320;
+ if (x1_ > 319)
+ x1_ -= 319;
+
+ y1_ = i + count2;
+ if (y1_ < 0)
+ y1_ += 200;
+ if (y1_ > 199)
+ y1_ -= 200;
+
+ off1 = 320 * y1_ + x1_;
+
+ x1_ = j + count;
+ if (x1_ < 0)
+ x1_ += 320;
+ if (x1_ > 319)
+ x1_ -= 320;
+
+ y1_ = i + tempLine[j];
+ if (y1_ < 0)
+ y1_ += 200;
+ if (y1_ > 199)
+ y1_ -= 200;
+ off2 = 320 * y1_ + x1_;
+
+ VGA[320 * i + j] = ghost[dir_dibujo1[off2] + (copia[off1] << 8)];
+ }
+ }
+ _system->copyRectToScreen((const byte *)VGA, 320, 0, 0, 320, 200);
+ _system->updateScreen();
+
+ _system->delayMillis(20);
+
+ // end of efecto()
+
MirarRaton();
- if (boton_dch == 1 || boton_izq == 1)
+ if (button_dch == 1 || button_izq == 1)
break;
- if (x_raton != xr)
+ if (mouseX != xr)
break;
- if (y_raton != yr)
+ if (mouseY != yr)
break;
}
- //TODO fin_ghost();
- loadPic(num_room);
+ // fin_ghost();
+ free(copia);
+ free(ghost);
+
+ char rm[20];
+ sprintf(rm, "%i.alg", roomNumber);
+ loadPic(rm);
decompressPic(dir_dibujo1, HALF_PAL);
}
@@ -1823,7 +1992,7 @@ void DrasculaEngine::FundeDelNegro(int VelocidadDeFundido) {
for (fundido = 0; fundido < 64; fundido++) {
for (color = 0; color < 256; color++) {
for (componente = 0; componente < 3; componente++) {
- palFundido[color][componente] = LimitaVGA(palJuego[color][componente] - 63 + fundido);
+ palFundido[color][componente] = LimitaVGA(gamePalette[color][componente] - 63 + fundido);
}
}
pause(VelocidadDeFundido);
@@ -1836,48 +2005,48 @@ void DrasculaEngine::color_abc(int cl) {
_color = cl;
if (cl == 0) {
- palJuego[254][0] = 0;
- palJuego[254][1] = 0;
- palJuego[254][2] = 0;
+ gamePalette[254][0] = 0;
+ gamePalette[254][1] = 0;
+ gamePalette[254][2] = 0;
} else if (cl == 1) {
- palJuego[254][0] = 0x10;
- palJuego[254][1] = 0x3E;
- palJuego[254][2] = 0x28;
+ gamePalette[254][0] = 0x10;
+ gamePalette[254][1] = 0x3E;
+ gamePalette[254][2] = 0x28;
} else if (cl == 3) {
- palJuego[254][0] = 0x16;
- palJuego[254][1] = 0x3F;
- palJuego[254][2] = 0x16;
+ gamePalette[254][0] = 0x16;
+ gamePalette[254][1] = 0x3F;
+ gamePalette[254][2] = 0x16;
} else if (cl == 4) {
- palJuego[254][0] = 0x9;
- palJuego[254][1] = 0x3F;
- palJuego[254][2] = 0x12;
+ gamePalette[254][0] = 0x9;
+ gamePalette[254][1] = 0x3F;
+ gamePalette[254][2] = 0x12;
} else if (cl == 5) {
- palJuego[254][0] = 0x3F;
- palJuego[254][1] = 0x3F;
- palJuego[254][2] = 0x15;
+ gamePalette[254][0] = 0x3F;
+ gamePalette[254][1] = 0x3F;
+ gamePalette[254][2] = 0x15;
} else if (cl == 7) {
- palJuego[254][0] = 0x38;
- palJuego[254][1] = 0;
- palJuego[254][2] = 0;
+ gamePalette[254][0] = 0x38;
+ gamePalette[254][1] = 0;
+ gamePalette[254][2] = 0;
} else if (cl == 8) {
- palJuego[254][0] = 0x3F;
- palJuego[254][1] = 0x27;
- palJuego[254][2] = 0x0B;
+ gamePalette[254][0] = 0x3F;
+ gamePalette[254][1] = 0x27;
+ gamePalette[254][2] = 0x0B;
} else if (cl == 9) {
- palJuego[254][0] = 0x2A;
- palJuego[254][1] = 0;
- palJuego[254][2] = 0x2A;
+ gamePalette[254][0] = 0x2A;
+ gamePalette[254][1] = 0;
+ gamePalette[254][2] = 0x2A;
} else if (cl == 10) {
- palJuego[254][0] = 0x30;
- palJuego[254][1] = 0x30;
- palJuego[254][2] = 0x30;
+ gamePalette[254][0] = 0x30;
+ gamePalette[254][1] = 0x30;
+ gamePalette[254][2] = 0x30;
} else if (cl == 11) {
- palJuego[254][0] = 98;
- palJuego[254][1] = 91;
- palJuego[254][2] = 100;
+ gamePalette[254][0] = 98;
+ gamePalette[254][1] = 91;
+ gamePalette[254][2] = 100;
};
- setPalette((byte *)&palJuego);
+ setPalette((byte *)&gamePalette);
}
char DrasculaEngine::LimitaVGA(char valor) {
@@ -1901,10 +2070,7 @@ void DrasculaEngine::centra_texto(const char *mensaje, int x_texto, int y_texto)
ya = 1;
strcpy(m1, mensaje);
- if (x_texto < 60)
- x_texto = 60;
- if (x_texto > 255)
- x_texto = 255;
+ x_texto = CLIP<int>(x_texto, 60, 255);
x_texto1 = x_texto;
@@ -1953,7 +2119,7 @@ imprimir:
}
}
-void DrasculaEngine::comienza_sound(const char *fichero) {
+void DrasculaEngine::playSound(const char *fichero) {
if (hay_sb == 1) {
sku = new Common::File;
sku->open(fichero);
@@ -1966,7 +2132,7 @@ void DrasculaEngine::comienza_sound(const char *fichero) {
ctvd_output(sku);
}
-void DrasculaEngine::anima(const char *animation, int FPS) {
+bool DrasculaEngine::anima(const char *animation, int FPS) {
Common::File FileIn;
unsigned j;
int NFrames = 1;
@@ -2017,9 +2183,11 @@ void DrasculaEngine::anima(const char *animation, int FPS) {
free(AuxBuffLast);
free(AuxBuffDes);
FileIn.close();
+
+ return ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE));
}
-void DrasculaEngine::animafin_sound_corte() {
+void DrasculaEngine::animastopSound_corte() {
if (hay_sb == 1) {
ctvd_stop();
delete sku;
@@ -2037,7 +2205,7 @@ void DrasculaEngine::FundeAlNegro(int VelocidadDeFundido) {
for (fundido = 63; fundido >= 0; fundido--) {
for (color = 0; color < 256; color++) {
for (componente = 0; componente < 3; componente++) {
- palFundido[color][componente] = LimitaVGA(palJuego[color][componente] - 63 + fundido);
+ palFundido[color][componente] = LimitaVGA(gamePalette[color][componente] - 63 + fundido);
}
}
pause(VelocidadDeFundido);
@@ -2144,7 +2312,7 @@ comienza:
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
-void DrasculaEngine::fin_sound() {
+void DrasculaEngine::stopSound() {
delay(1);
if (hay_sb == 1) {
@@ -2202,7 +2370,7 @@ bool DrasculaEngine::carga_partida(const char *nom_game) {
sentido_hare = sav->readSint32LE();
for (l = 1; l < 43; l++) {
- objetos_que_tengo[l] = sav->readSint32LE();
+ inventoryObjects[l] = sav->readSint32LE();
}
for (l = 0; l < NUM_FLAGS; l++) {
@@ -2210,7 +2378,7 @@ bool DrasculaEngine::carga_partida(const char *nom_game) {
}
lleva_objeto = sav->readSint32LE();
- objeto_que_lleva = sav->readSint32LE();
+ pickedObject = sav->readSint32LE();
hay_que_load = 0;
return true;
@@ -2220,87 +2388,51 @@ void DrasculaEngine::puertas_cerradas(int l) {
if (num_ejec == 1 || num_ejec == 3 || num_ejec == 5 || num_ejec == 6)
return;
else if (num_ejec == 2) {
- if (num_obj[l] == 138 && flags[0] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 138 && flags[0] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 136 && flags[8] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 136 && flags[8] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 156 && flags[16] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 156 && flags[16] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 163 && flags[17] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 163 && flags[17] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 177 && flags[15] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 177 && flags[15] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 175 && flags[40] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 175 && flags[40] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 173 && flags[36] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 173 && flags[36] == 1)
- isDoor[l] = 1;
+ if (num_obj[l] == 138)
+ isDoor[l] = flags[0];
+ else if (num_obj[l] == 136)
+ isDoor[l] = flags[8];
+ else if (num_obj[l] == 156)
+ isDoor[l] = flags[16];
+ else if (num_obj[l] == 163)
+ isDoor[l] = flags[17];
+ else if (num_obj[l] == 177)
+ isDoor[l] = flags[15];
+ else if (num_obj[l] == 175)
+ isDoor[l] = flags[40];
+ else if (num_obj[l] == 173)
+ isDoor[l] = flags[36];
} else if (num_ejec == 4) {
if (num_obj[l] == 101 && flags[0] == 0)
isDoor[l] = 0;
else if (num_obj[l] == 101 && flags[0] == 1 && flags[28] == 1)
isDoor[l] = 1;
- else if (num_obj[l] == 103 && flags[0] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 103 && flags[0] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 104 && flags[1] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 104 && flags[1] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 105 && flags[1] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 105 && flags[1] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 106 && flags[2] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 106 && flags[2] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 107 && flags[2] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 107 && flags[2] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 110 && flags[6] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 110 && flags[6] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 114 && flags[4] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 114 && flags[4] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 115 && flags[4] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 115 && flags[4] == 1)
- isDoor[l] = 1;
+ else if (num_obj[l] == 103)
+ isDoor[l] = flags[0];
+ else if (num_obj[l] == 104)
+ isDoor[l] = flags[1];
+ else if (num_obj[l] == 105)
+ isDoor[l] = flags[1];
+ else if (num_obj[l] == 106)
+ isDoor[l] = flags[2];
+ else if (num_obj[l] == 107)
+ isDoor[l] = flags[2];
+ else if (num_obj[l] == 110)
+ isDoor[l] = flags[6];
+ else if (num_obj[l] == 114)
+ isDoor[l] = flags[4];
+ else if (num_obj[l] == 115)
+ isDoor[l] = flags[4];
else if (num_obj[l] == 116 && flags[5] == 0)
isDoor[l] = 0;
else if (num_obj[l] == 116 && flags[5] == 1 && flags[23] == 1)
isDoor[l] = 1;
- else if (num_obj[l] == 117 && flags[5] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 117 && flags[5] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 120 && flags[8] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 120 && flags[8] == 1)
- isDoor[l] = 1;
- else if (num_obj[l] == 122 && flags[7] == 0)
- isDoor[l] = 0;
- else if (num_obj[l] == 122 && flags[7] == 1)
- isDoor[l] = 1;
+ else if (num_obj[l] == 117)
+ isDoor[l] = flags[5];
+ else if (num_obj[l] == 120)
+ isDoor[l] = flags[8];
+ else if (num_obj[l] == 122)
+ isDoor[l] = flags[7];
}
}
@@ -2309,7 +2441,7 @@ void DrasculaEngine::color_hare() {
for (color = 235; color < 253; color++) {
for (componente = 0; componente < 3; componente++) {
- palJuego[color][componente] = palHare[color][componente];
+ gamePalette[color][componente] = palHare[color][componente];
}
}
updatePalette();
@@ -2322,7 +2454,7 @@ void DrasculaEngine::funde_hare(int oscuridad) {
for (fundido = oscuridad; fundido >= 0; fundido--) {
for (color = 235; color < 253; color++) {
for (componente = 0; componente < 3; componente++)
- palJuego[color][componente] = LimitaVGA(palJuego[color][componente] - 8 + fundido);
+ gamePalette[color][componente] = LimitaVGA(gamePalette[color][componente] - 8 + fundido);
}
}
@@ -2334,7 +2466,7 @@ void DrasculaEngine::paleta_hare_claro() {
for (color = 235; color < 253; color++) {
for (componente = 0; componente < 3; componente++)
- palHareClaro[color][componente] = palJuego[color][componente];
+ palHareClaro[color][componente] = gamePalette[color][componente];
}
}
@@ -2343,7 +2475,7 @@ void DrasculaEngine::paleta_hare_oscuro() {
for (color = 235; color < 253; color++) {
for (componente = 0; componente < 3; componente++)
- palHareOscuro[color][componente] = palJuego[color][componente];
+ palHareOscuro[color][componente] = gamePalette[color][componente];
}
}
@@ -2352,7 +2484,7 @@ void DrasculaEngine::hare_claro() {
for (color = 235; color < 253; color++) {
for (componente = 0; componente < 3; componente++)
- palJuego[color][componente] = palHareClaro[color][componente];
+ gamePalette[color][componente] = palHareClaro[color][componente];
}
updatePalette();
@@ -2366,26 +2498,26 @@ void DrasculaEngine::empieza_andar() {
if (num_ejec == 2) {
if ((sitio_x < hare_x) && (sitio_y <= (hare_y + alto_hare)))
- cuadrante_1();
+ quadrant_1();
else if ((sitio_x < hare_x) && (sitio_y > (hare_y + alto_hare)))
- cuadrante_3();
+ quadrant_3();
else if ((sitio_x > hare_x + ancho_hare) && (sitio_y <= (hare_y + alto_hare)))
- cuadrante_2();
+ quadrant_2();
else if ((sitio_x > hare_x + ancho_hare) && (sitio_y > (hare_y + alto_hare)))
- cuadrante_4();
+ quadrant_4();
else if (sitio_y < hare_y + alto_hare)
anda_parriba();
else if (sitio_y > hare_y + alto_hare)
anda_pabajo();
} else {
if ((sitio_x < hare_x + ancho_hare / 2 ) && (sitio_y <= (hare_y + alto_hare)))
- cuadrante_1();
+ quadrant_1();
else if ((sitio_x < hare_x + ancho_hare / 2) && (sitio_y > (hare_y + alto_hare)))
- cuadrante_3();
+ quadrant_3();
else if ((sitio_x > hare_x + ancho_hare / 2) && (sitio_y <= (hare_y + alto_hare)))
- cuadrante_2();
+ quadrant_2();
else if ((sitio_x > hare_x + ancho_hare / 2) && (sitio_y > (hare_y + alto_hare)))
- cuadrante_4();
+ quadrant_4();
else
hare_se_mueve = 0;
}
@@ -2538,29 +2670,29 @@ void DrasculaEngine::menu_sin_volcar() {
strcpy(texto_icono, iconName[x]);
for (n = 1; n < 43; n++) {
- h = objetos_que_tengo[n];
+ h = inventoryObjects[n];
if (h != 0) {
if (num_ejec == 6)
- copyBackground(x_pol[n], y_pol[n], x_obj[n], y_obj[n],
+ copyBackground(x_pol[n], y_pol[n], itemLocations[n].x, itemLocations[n].y,
OBJWIDTH, OBJHEIGHT, dir_mesa, dir_zona_pantalla);
else
- copyBackground(x_pol[n], y_pol[n], x_obj[n], y_obj[n],
+ copyBackground(x_pol[n], y_pol[n], itemLocations[n].x, itemLocations[n].y,
OBJWIDTH, OBJHEIGHT, dir_hare_frente, dir_zona_pantalla);
}
- copyRect(x1d_menu[h], y1d_menu[h], x_obj[n], y_obj[n],
+ copyRect(x1d_menu[h], y1d_menu[h], itemLocations[n].x, itemLocations[n].y,
OBJWIDTH, OBJHEIGHT, dir_hare_fondo, dir_zona_pantalla);
}
if (x < 7)
- print_abc(texto_icono, x_obj[x] - 2, y_obj[x] - 7);
+ print_abc(texto_icono, itemLocations[x].x - 2, itemLocations[x].y - 7);
}
void DrasculaEngine::barra_menu() {
int n, sobre_verbo = 1;
for (n = 0; n < 7; n++) {
- if (x_raton > x_barra[n] && x_raton < x_barra[n + 1])
+ if (mouseX > x_barra[n] && mouseX < x_barra[n + 1])
sobre_verbo = 0;
copyRect(OBJWIDTH * n, OBJHEIGHT * sobre_verbo, x_barra[n], 2,
OBJWIDTH, OBJHEIGHT, dir_hare_fondo, dir_zona_pantalla);
@@ -2575,8 +2707,8 @@ void DrasculaEngine::saca_objeto() {
for (n = 1; n < 43; n++){
if (sobre_que_objeto() == n) {
- h = objetos_que_tengo[n];
- objetos_que_tengo[n] = 0;
+ h = inventoryObjects[n];
+ inventoryObjects[n] = 0;
if (h != 0)
lleva_objeto = 1;
}
@@ -2737,19 +2869,19 @@ bool DrasculaEngine::sal_de_la_habitacion(int l) {
bool DrasculaEngine::coge_objeto() {
int h, n;
- h = objeto_que_lleva;
+ h = pickedObject;
comprueba_flags = 1;
updateRoom();
menu_sin_volcar();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- if (objeto_que_lleva < 7)
+ if (pickedObject < 7)
goto usando_verbos;
for (n = 1; n < 43; n++) {
- if (sobre_que_objeto() == n && objetos_que_tengo[n] == 0) {
- objetos_que_tengo[n] = h;
+ if (sobre_que_objeto() == n && inventoryObjects[n] == 0) {
+ inventoryObjects[n] = h;
lleva_objeto = 0;
comprueba_flags = 0;
}
@@ -2773,400 +2905,401 @@ bool DrasculaEngine::banderas(int fl) {
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- hay_respuesta = 1;
+ hay_answer = 1;
if (menu_scr == 1) {
if (num_ejec == 1) {
- if (objeto_que_lleva == LOOK && fl == 28)
+ if (pickedObject == kVerbLook && fl == 28)
talk(_text[_lang][328], "328.als");
} else if (num_ejec == 2) {
- if ((objeto_que_lleva == LOOK && fl == 22 && flags[23] == 0)
- || (objeto_que_lleva == OPEN && fl == 22 && flags[23] == 0)) {
+ if ((pickedObject == kVerbLook && fl == 22 && flags[23] == 0)
+ || (pickedObject == kVerbOpen && fl == 22 && flags[23] == 0)) {
talk(_text[_lang][164], "164.als");
flags[23] = 1;
withoutVerb();
suma_objeto(7);
suma_objeto(18);
- } else if (objeto_que_lleva == LOOK && fl == 22 && flags[23] == 1)
+ } else if (pickedObject == kVerbLook && fl == 22 && flags[23] == 1)
talk(_text[_lang][307], "307.als");
- else if (objeto_que_lleva == LOOK && fl == 28)
+ else if (pickedObject == kVerbLook && fl == 28)
talk(_text[_lang][328], "328.als");
- else if (objeto_que_lleva == LOOK && fl == 7)
+ else if (pickedObject == kVerbLook && fl == 7)
talk(_text[_lang][143], "143.als");
- else if (objeto_que_lleva == TALK && fl == 7)
+ else if (pickedObject == kVerbTalk && fl == 7)
talk(_text[_lang][144], "144.als");
- else if (objeto_que_lleva == LOOK && fl == 8)
+ else if (pickedObject == kVerbLook && fl == 8)
talk(_text[_lang][145], "145.als");
- else if (objeto_que_lleva == TALK && fl == 8)
+ else if (pickedObject == kVerbTalk && fl == 8)
talk(_text[_lang][146], "146.als");
- else if (objeto_que_lleva == LOOK && fl == 9)
+ else if (pickedObject == kVerbLook && fl == 9)
talk(_text[_lang][147], "147.als");
- else if (objeto_que_lleva == TALK && fl == 9)
+ else if (pickedObject == kVerbTalk && fl == 9)
talk(_text[_lang][148], "148.als");
- else if (objeto_que_lleva == LOOK && fl == 10)
+ else if (pickedObject == kVerbLook && fl == 10)
talk(_text[_lang][151], "151.als");
- else if (objeto_que_lleva == LOOK && fl == 11)
+ else if (pickedObject == kVerbLook && fl == 11)
talk(_text[_lang][152], "152.als");
- else if (objeto_que_lleva == TALK && fl == 11)
+ else if (pickedObject == kVerbTalk && fl == 11)
talk(_text[_lang][153], "153.als");
- else if (objeto_que_lleva == LOOK && fl == 12)
+ else if (pickedObject == kVerbLook && fl == 12)
talk(_text[_lang][154], "154.als");
- else if (objeto_que_lleva == LOOK && fl == 13)
+ else if (pickedObject == kVerbLook && fl == 13)
talk(_text[_lang][155], "155.als");
- else if (objeto_que_lleva == LOOK && fl == 14)
+ else if (pickedObject == kVerbLook && fl == 14)
talk(_text[_lang][157], "157.als");
- else if (objeto_que_lleva == LOOK && fl == 15)
+ else if (pickedObject == kVerbLook && fl == 15)
talk(_text[_lang][58], "58.als");
- else if (objeto_que_lleva == LOOK && fl == 16)
+ else if (pickedObject == kVerbLook && fl == 16)
talk(_text[_lang][158], "158.als");
- else if (objeto_que_lleva == LOOK && fl == 17)
+ else if (pickedObject == kVerbLook && fl == 17)
talk(_text[_lang][159], "159.als");
- else if (objeto_que_lleva == LOOK && fl == 18)
+ else if (pickedObject == kVerbLook && fl == 18)
talk(_text[_lang][160], "160.als");
- else if (objeto_que_lleva == LOOK && fl == 19)
+ else if (pickedObject == kVerbLook && fl == 19)
talk(_text[_lang][161], "161.als");
- else if (objeto_que_lleva == LOOK && fl == 20)
+ else if (pickedObject == kVerbLook && fl == 20)
talk(_text[_lang][162], "162.als");
- else if (objeto_que_lleva == LOOK && fl == 23)
+ else if (pickedObject == kVerbLook && fl == 23)
talk(_text[_lang][152], "152.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 3) {
- if (objeto_que_lleva == LOOK && fl == 22)
+ if (pickedObject == kVerbLook && fl == 22)
talk(_text[_lang][307], "307.als");
- else if (objeto_que_lleva == LOOK && fl == 28)
+ else if (pickedObject == kVerbLook && fl == 28)
talk(_text[_lang][328], "328.als");
- else if (objeto_que_lleva == LOOK && fl == 7)
+ else if (pickedObject == kVerbLook && fl == 7)
talk(_text[_lang][143], "143.als");
- else if (objeto_que_lleva == TALK && fl == 7)
+ else if (pickedObject == kVerbTalk && fl == 7)
talk(_text[_lang][144], "144.als");
- else if (objeto_que_lleva == LOOK && fl == 8)
+ else if (pickedObject == kVerbLook && fl == 8)
talk(_text[_lang][145], "145.als");
- else if (objeto_que_lleva == TALK && fl == 8)
+ else if (pickedObject == kVerbTalk && fl == 8)
talk(_text[_lang][146], "146.als");
- else if (objeto_que_lleva == LOOK && fl == 9)
+ else if (pickedObject == kVerbLook && fl == 9)
talk(_text[_lang][147], "147.als");
- else if (objeto_que_lleva == TALK && fl == 9)
+ else if (pickedObject == kVerbTalk && fl == 9)
talk(_text[_lang][148], "148.als");
- else if (objeto_que_lleva == LOOK && fl == 10)
+ else if (pickedObject == kVerbLook && fl == 10)
talk(_text[_lang][151], "151.als");
- else if (objeto_que_lleva == LOOK && fl == 11)
+ else if (pickedObject == kVerbLook && fl == 11)
talk(_text[_lang][152], "152.als");
- else if (objeto_que_lleva == TALK && fl == 11)
+ else if (pickedObject == kVerbTalk && fl == 11)
talk(_text[_lang][153], "153.als");
- else if (objeto_que_lleva == LOOK && fl == 12)
+ else if (pickedObject == kVerbLook && fl == 12)
talk(_text[_lang][154], "154.als");
- else if (objeto_que_lleva == LOOK && fl == 13)
+ else if (pickedObject == kVerbLook && fl == 13)
talk(_text[_lang][155], "155.als");
- else if (objeto_que_lleva == LOOK && fl == 14)
+ else if (pickedObject == kVerbLook && fl == 14)
talk(_text[_lang][157], "157.als");
- else if (objeto_que_lleva == LOOK && fl == 15)
+ else if (pickedObject == kVerbLook && fl == 15)
talk(_text[_lang][58], "58.als");
- else if (objeto_que_lleva == LOOK && fl == 16)
+ else if (pickedObject == kVerbLook && fl == 16)
talk(_text[_lang][158], "158.als");
- else if (objeto_que_lleva == LOOK && fl == 17)
+ else if (pickedObject == kVerbLook && fl == 17)
talk(_text[_lang][159], "159.als");
- else if (objeto_que_lleva == LOOK && fl == 18)
+ else if (pickedObject == kVerbLook && fl == 18)
talk(_text[_lang][160], "160.als");
- else if (objeto_que_lleva == LOOK && fl == 19)
+ else if (pickedObject == kVerbLook && fl == 19)
talk(_text[_lang][161], "161.als");
- else if (objeto_que_lleva == LOOK && fl == 20)
+ else if (pickedObject == kVerbLook && fl == 20)
talk(_text[_lang][162], "162.als");
- else if (objeto_que_lleva == LOOK && fl == 23)
+ else if (pickedObject == kVerbLook && fl == 23)
talk(_text[_lang][152], "152.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 4) {
- if ((objeto_que_lleva == 18 && fl == 19) || (objeto_que_lleva == 19 && fl == 18)) {
+ if ((pickedObject == 18 && fl == 19) || (pickedObject == 19 && fl == 18)) {
withoutVerb();
chooseObject(21);
resta_objeto(18);
resta_objeto(19);
- } else if ((objeto_que_lleva == 14 && fl == 19) || (objeto_que_lleva == 19 && fl == 14))
+ } else if ((pickedObject == 14 && fl == 19) || (pickedObject == 19 && fl == 14))
talk(_text[_lang][484], "484.als");
- else if (objeto_que_lleva == LOOK && fl == 28)
+ else if (pickedObject == kVerbLook && fl == 28)
talk(_text[_lang][328], "328.als");
- else if (objeto_que_lleva == LOOK && fl == 7)
+ else if (pickedObject == kVerbLook && fl == 7)
talk(_text[_lang][478], "478.als");
- else if (objeto_que_lleva == LOOK && fl == 8)
+ else if (pickedObject == kVerbLook && fl == 8)
talk(_text[_lang][480], "480.als");
- else if (objeto_que_lleva == LOOK && fl == 9) {
+ else if (pickedObject == kVerbLook && fl == 9) {
talk(_text[_lang][482], "482.als");
talk(_text[_lang][483], "483.als");
- } else if (objeto_que_lleva == LOOK && fl == 10)
+ } else if (pickedObject == kVerbLook && fl == 10)
talk(_text[_lang][485], "485.als");
- else if (objeto_que_lleva == LOOK && fl == 11)
+ else if (pickedObject == kVerbLook && fl == 11)
talk(_text[_lang][488], "488.als");
- else if (objeto_que_lleva == LOOK && fl == 12)
+ else if (pickedObject == kVerbLook && fl == 12)
talk(_text[_lang][486], "486.als");
- else if (objeto_que_lleva == LOOK && fl == 13)
+ else if (pickedObject == kVerbLook && fl == 13)
talk(_text[_lang][490], "490.als");
- else if (objeto_que_lleva == LOOK && fl == 14)
+ else if (pickedObject == kVerbLook && fl == 14)
talk(_text[_lang][122], "122.als");
- else if (objeto_que_lleva == LOOK && fl == 15)
+ else if (pickedObject == kVerbLook && fl == 15)
talk(_text[_lang][117], "117.als");
- else if (objeto_que_lleva == TALK && fl == 15)
+ else if (pickedObject == kVerbTalk && fl == 15)
talk(_text[_lang][118], "118.als");
- else if (objeto_que_lleva == OPEN && fl == 15)
+ else if (pickedObject == kVerbOpen && fl == 15)
talk(_text[_lang][119], "119.als");
- else if (objeto_que_lleva == LOOK && fl == 16)
+ else if (pickedObject == kVerbLook && fl == 16)
talk(_text[_lang][491], "491.als");
- else if (objeto_que_lleva == LOOK && fl == 17)
+ else if (pickedObject == kVerbLook && fl == 17)
talk(_text[_lang][478], "478.als");
- else if (objeto_que_lleva == LOOK && fl == 18)
+ else if (pickedObject == kVerbLook && fl == 18)
talk(_text[_lang][493], "493.als");
- else if (objeto_que_lleva == LOOK && fl == 19) {
+ else if (pickedObject == kVerbLook && fl == 19) {
talk(_text[_lang][494], "494.als");
talk(_text[_lang][495], "495.als");
- } else if (objeto_que_lleva == LOOK && fl == 20)
+ } else if (pickedObject == kVerbLook && fl == 20)
talk(_text[_lang][162], "162.als");
- else if (objeto_que_lleva == LOOK && fl == 21)
+ else if (pickedObject == kVerbLook && fl == 21)
talk(_text[_lang][496], "496.als");
- else if (objeto_que_lleva == LOOK && fl == 22)
+ else if (pickedObject == kVerbLook && fl == 22)
talk(_text[_lang][161], "161.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 5) {
- if (objeto_que_lleva == LOOK && fl == 28)
+ if (pickedObject == kVerbLook && fl == 28)
talk(_text[_lang][328], "328.als");
- else if (objeto_que_lleva == LOOK && fl == 7)
+ else if (pickedObject == kVerbLook && fl == 7)
talk(_text[_lang][478],"478.als");
- else if (objeto_que_lleva == LOOK && fl == 8)
+ else if (pickedObject == kVerbLook && fl == 8)
talk(_text[_lang][120], "120.als");
- else if (objeto_que_lleva == LOOK && fl == 9) {
+ else if (pickedObject == kVerbLook && fl == 9) {
talk(_text[_lang][482], "482.als");
talk(_text[_lang][483], "483.als");
- } else if (objeto_que_lleva == LOOK && fl == 11)
+ } else if (pickedObject == kVerbLook && fl == 11)
talk(_text[_lang][488], "488.als");
- else if (objeto_que_lleva == LOOK && fl == 13)
+ else if (pickedObject == kVerbLook && fl == 13)
talk(_text[_lang][490], "490.als");
- else if (objeto_que_lleva == LOOK && fl == 14)
+ else if (pickedObject == kVerbLook && fl == 14)
talk(_text[_lang][121], "121.als");
- else if (objeto_que_lleva == LOOK && fl == 15)
+ else if (pickedObject == kVerbLook && fl == 15)
talk(_text[_lang][117], "117.als");
- else if (objeto_que_lleva == TALK && fl == 15)
+ else if (pickedObject == kVerbTalk && fl == 15)
talk(_text[_lang][118], "118.als");
- else if (objeto_que_lleva == OPEN && fl == 15)
+ else if (pickedObject == kVerbOpen && fl == 15)
talk(_text[_lang][119], "119.als");
- else if (objeto_que_lleva == LOOK && fl == 17)
+ else if (pickedObject == kVerbLook && fl == 17)
talk(_text[_lang][478], "478.als");
- else if (objeto_que_lleva == LOOK && fl == 20)
+ else if (pickedObject == kVerbLook && fl == 20)
talk(_text[_lang][162], "162.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 6) {
- if (objeto_que_lleva == LOOK && fl == 28)
+ if (pickedObject == kVerbLook && fl == 28)
talk(_text[_lang][328], "328.als");
- else if (objeto_que_lleva == LOOK && fl == 9) {
+ else if (pickedObject == kVerbLook && fl == 9) {
talk(_text[_lang][482], "482.als");
talk(_text[_lang][483], "483.als");
- } else if (objeto_que_lleva == LOOK && fl == 20)
+ } else if (pickedObject == kVerbLook && fl == 20)
talk(_text[_lang][123], "123.als");
- else if (objeto_que_lleva == LOOK && fl == 21)
+ else if (pickedObject == kVerbLook && fl == 21)
talk(_text[_lang][441], "441.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
} else {
if (num_ejec == 1) {
- if (objeto_que_lleva == LOOK && fl == 50)
+ if (pickedObject == kVerbLook && fl == 50)
talk(_text[_lang][308], "308.als");
- else if (objeto_que_lleva == OPEN && fl == 50)
+ else if (pickedObject == kVerbOpen && fl == 50)
talk(_text[_lang][310], "310.als");
- else if (objeto_que_lleva == CLOSE && fl == 50)
+ else if (pickedObject == kVerbClose && fl == 50)
talk(_text[_lang][311], "311.als");
- else if (objeto_que_lleva == MOVE && fl == 50)
+ else if (pickedObject == kVerbMove && fl == 50)
talk(_text[_lang][312], "312.als");
- else if (objeto_que_lleva == PICK && fl == 50)
+ else if (pickedObject == kVerbPick && fl == 50)
talk(_text[_lang][313], "313.als");
- else if (objeto_que_lleva == TALK && fl == 50)
+ else if (pickedObject == kVerbTalk && fl == 50)
talk(_text[_lang][314], "314.als");
- else if (!strcmp(num_room, "62.alg"))
+ else if (roomNumber == 62)
room_62(fl);
- else if (!strcmp(num_room, "63.alg"))
+ else if (roomNumber == 63)
room_63(fl);
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 2) {
- if (objeto_que_lleva == LOOK && fl == 50)
+ if (pickedObject == kVerbLook && fl == 50)
talk(_text[_lang][308], "308.als");
- else if (objeto_que_lleva == OPEN && fl == 50)
+ else if (pickedObject == kVerbOpen && fl == 50)
talk(_text[_lang][310], "310.als");
- else if (objeto_que_lleva == CLOSE && fl == 50)
+ else if (pickedObject == kVerbClose && fl == 50)
talk(_text[_lang][311], "311.als");
- else if (objeto_que_lleva == MOVE && fl == 50)
+ else if (pickedObject == kVerbMove && fl == 50)
talk(_text[_lang][312], "312.als");
- else if (objeto_que_lleva == PICK && fl == 50)
+ else if (pickedObject == kVerbPick && fl == 50)
talk(_text[_lang][313], "313.als");
- else if (objeto_que_lleva == TALK && fl == 50)
+ else if (pickedObject == kVerbTalk && fl == 50)
talk(_text[_lang][314], "314.als");
- else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0 && strcmp(num_room, "18.alg"))
+ // Note: the original check was strcmp(num_room, "18.alg")
+ else if (pickedObject == 11 && fl == 50 && flags[22] == 0 && roomNumber != 18)
talk(_text[_lang][315], "315.als");
- else if (objeto_que_lleva == 13 && fl == 50)
+ else if (pickedObject == 13 && fl == 50)
talk(_text[_lang][156], "156.als");
- else if (objeto_que_lleva == 20 && fl == 50)
+ else if (pickedObject == 20 && fl == 50)
talk(_text[_lang][163], "163.als");
- else if (!strcmp(num_room, "1.alg"))
+ else if (roomNumber == 1)
room_1(fl);
- else if (!strcmp(num_room, "3.alg"))
+ else if (roomNumber == 3)
room_3(fl);
- else if (!strcmp(num_room, "4.alg"))
+ else if (roomNumber == 4)
room_4(fl);
- else if (!strcmp(num_room, "5.alg"))
+ else if (roomNumber == 5)
room_5(fl);
- else if (!strcmp(num_room, "6.alg"))
+ else if (roomNumber == 6)
room_6(fl);
- else if (!strcmp(num_room, "7.alg"))
+ else if (roomNumber == 7)
room_7(fl);
- else if (!strcmp(num_room, "8.alg"))
+ else if (roomNumber == 8)
room_8(fl);
- else if (!strcmp(num_room, "9.alg"))
+ else if (roomNumber == 9)
room_9(fl);
- else if (!strcmp(num_room, "12.alg"))
+ else if (roomNumber == 12)
room_12(fl);
- else if (!strcmp(num_room, "14.alg"))
+ else if (roomNumber == 14)
room_14(fl);
- else if (!strcmp(num_room, "15.alg"))
+ else if (roomNumber == 15)
room_15(fl);
- else if (!strcmp(num_room, "16.alg"))
+ else if (roomNumber == 16)
room_16(fl);
- else if (!strcmp(num_room, "17.alg"))
+ else if (roomNumber == 17)
room_17(fl);
- else if (!strcmp(num_room, "18.alg"))
+ else if (roomNumber == 18)
room_18(fl);
- else if (!strcmp(num_room, "19.alg"))
+ else if (roomNumber == 19)
room_19(fl);
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 3) {
- if (objeto_que_lleva == LOOK && fl == 50)
+ if (pickedObject == kVerbLook && fl == 50)
talk(_text[_lang][309], "309.als");
- else if (objeto_que_lleva == OPEN && fl == 50)
+ else if (pickedObject == kVerbOpen && fl == 50)
talk(_text[_lang][310], "310.als");
- else if (objeto_que_lleva == CLOSE && fl == 50)
+ else if (pickedObject == kVerbClose && fl == 50)
talk(_text[_lang][311], "311.als");
- else if (objeto_que_lleva == MOVE && fl == 50)
+ else if (pickedObject == kVerbMove && fl == 50)
talk(_text[_lang][312], "312.als");
- else if (objeto_que_lleva == PICK && fl == 50)
+ else if (pickedObject == kVerbPick && fl == 50)
talk(_text[_lang][313], "313.als");
- else if (objeto_que_lleva == TALK && fl == 50)
+ else if (pickedObject == kVerbTalk && fl == 50)
talk(_text[_lang][314], "314.als");
- else if (!strcmp(num_room, "13.alg")) {
+ else if (roomNumber == 13) {
if (room_13(fl))
return true;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 4) {
- if (!strcmp(num_room, "28.alg"))
+ if (roomNumber == 28)
talk(_text[_lang][178], "178.als");
- else if (objeto_que_lleva == LOOK && fl == 50)
+ else if (pickedObject == kVerbLook && fl == 50)
talk(_text[_lang][309], "309.als");
- else if (objeto_que_lleva == OPEN && fl == 50)
+ else if (pickedObject == kVerbOpen && fl == 50)
talk(_text[_lang][310], "310.als");
- else if (objeto_que_lleva == CLOSE && fl == 50)
+ else if (pickedObject == kVerbClose && fl == 50)
talk(_text[_lang][311], "311.als");
- else if (objeto_que_lleva == MOVE && fl == 50)
+ else if (pickedObject == kVerbMove && fl == 50)
talk(_text[_lang][312], "312.als");
- else if (objeto_que_lleva == PICK && fl == 50)
+ else if (pickedObject == kVerbPick && fl == 50)
talk(_text[_lang][313], "313.als");
- else if (objeto_que_lleva == TALK && fl == 50)
+ else if (pickedObject == kVerbTalk && fl == 50)
talk(_text[_lang][314], "314.als");
- else if (objeto_que_lleva == 8 && fl == 50 && flags[18] == 0)
+ else if (pickedObject == 8 && fl == 50 && flags[18] == 0)
talk(_text[_lang][481], "481.als");
- else if (objeto_que_lleva == 9 && fl == 50)
+ else if (pickedObject == 9 && fl == 50)
talk(_text[_lang][484], "484.als");
- else if (objeto_que_lleva == 12 && fl == 50 && flags[18] == 0)
+ else if (pickedObject == 12 && fl == 50 && flags[18] == 0)
talk(_text[_lang][487], "487.als");
- else if (objeto_que_lleva == 20 && fl == 50)
+ else if (pickedObject == 20 && fl == 50)
talk(_text[_lang][487], "487.als");
- else if (!strcmp(num_room, "21.alg")) {
+ else if (roomNumber == 21) {
if (room_21(fl))
return true;
- } else if (!strcmp(num_room, "22.alg"))
+ } else if (roomNumber == 22)
room_22(fl);
- else if (!strcmp(num_room, "23.alg"))
+ else if (roomNumber == 23)
room_23(fl);
- else if (!strcmp(num_room, "24.alg"))
+ else if (roomNumber == 24)
room_24(fl);
- else if (!strcmp(num_room, "26.alg"))
+ else if (roomNumber == 26)
room_26(fl);
- else if (!strcmp(num_room, "27.alg"))
+ else if (roomNumber == 27)
room_27(fl);
- else if (!strcmp(num_room, "29.alg"))
+ else if (roomNumber == 29)
room_29(fl);
- else if (!strcmp(num_room, "30.alg"))
+ else if (roomNumber == 30)
room_30(fl);
- else if (!strcmp(num_room, "31.alg"))
+ else if (roomNumber == 31)
room_31(fl);
- else if (!strcmp(num_room, "34.alg"))
+ else if (roomNumber == 34)
room_34(fl);
- else if (!strcmp(num_room, "35.alg"))
+ else if (roomNumber == 35)
room_35(fl);
- else if (!strcmp(num_room, "44.alg"))
+ else if (roomNumber == 44)
room_44(fl);
else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 5) {
- if (objeto_que_lleva == LOOK && fl == 50)
+ if (pickedObject == kVerbLook && fl == 50)
talk("Cuanto mas me miro, mas me gusto", "54.als");
- else if (objeto_que_lleva == OPEN && fl == 50)
+ else if (pickedObject == kVerbOpen && fl == 50)
talk("y luego como me cierro", "19.als");
- else if (objeto_que_lleva == CLOSE && fl == 50)
+ else if (pickedObject == kVerbClose && fl == 50)
talk("Tendre que abrirme primero no", "19.als");
- else if (objeto_que_lleva == MOVE && fl == 50)
+ else if (pickedObject == kVerbMove && fl == 50)
talk("Estoy bien donde estoy", "19.als");
- else if (objeto_que_lleva == PICK && fl == 50)
+ else if (pickedObject == kVerbPick && fl == 50)
talk("Ya me tengo", "11.als");
- else if (objeto_que_lleva == TALK && fl == 50)
+ else if (pickedObject == kVerbTalk && fl == 50)
talk("hola yo", "16.als");
- else if (objeto_que_lleva == 20 && fl == 50)
+ else if (pickedObject == 20 && fl == 50)
talk(_text[_lang][487], "487.als");
- else if (!strcmp(num_room, "49.alg"))
+ else if (roomNumber == 49)
room_49(fl);
- else if (!strcmp(num_room, "53.alg"))
+ else if (roomNumber == 53)
room_53(fl);
- else if (!strcmp(num_room, "54.alg"))
+ else if (roomNumber == 54)
room_54(fl);
- else if (!strcmp(num_room, "55.alg"))
+ else if (roomNumber == 55)
room_55(fl);
- else if (!strcmp(num_room, "56.alg")) {
+ else if (roomNumber == 56) {
if (room_56(fl))
return true;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
} else if (num_ejec == 6) {
- if (objeto_que_lleva == LOOK && fl == 50 && flags[0] == 1)
+ if (pickedObject == kVerbLook && fl == 50 && flags[0] == 1)
talk(_text[_lang][308], "308.als");
- else if (objeto_que_lleva == LOOK && fl == 50 && flags[0] == 0)
+ else if (pickedObject == kVerbLook && fl == 50 && flags[0] == 0)
talk(_text[_lang][310], "250.als" );
- else if (objeto_que_lleva == OPEN && fl == 50)
+ else if (pickedObject == kVerbOpen && fl == 50)
talk(_text[_lang][310], "310.als" );
- else if (objeto_que_lleva == CLOSE && fl == 50)
+ else if (pickedObject == kVerbClose && fl == 50)
talk(_text[_lang][311], "311.als" );
- else if (objeto_que_lleva == MOVE && fl == 50)
+ else if (pickedObject == kVerbMove && fl == 50)
talk(_text[_lang][312], "312.als" );
- else if (objeto_que_lleva == PICK && fl == 50)
+ else if (pickedObject == kVerbPick && fl == 50)
talk(_text[_lang][313], "313.als" );
- else if (objeto_que_lleva == TALK && fl == 50)
+ else if (pickedObject == kVerbTalk && fl == 50)
talk(_text[_lang][314], "314.als" );
- else if (!strcmp(num_room, "102.alg"))
+ else if (roomNumber == 102)
room_pendulo(fl);
- else if (!strcmp(num_room, "58.alg"))
+ else if (roomNumber == 58)
room_58(fl);
- else if (!strcmp(num_room, "59.alg"))
+ else if (roomNumber == 59)
room_59(fl);
- else if (!strcmp(num_room, "60.alg")) {
+ else if (roomNumber == 60) {
if (room_60(fl))
return true;
- } else if (!strcmp(num_room, "61.alg"))
+ } else if (roomNumber == 61)
room_61(fl);
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
}
- if (hay_respuesta == 0 && hay_nombre == 1)
+ if (hay_answer == 0 && hay_nombre == 1)
room_0();
- else if (hay_respuesta == 0 && menu_scr == 1)
+ else if (hay_answer == 0 && menu_scr == 1)
room_0();
return false;
@@ -3177,8 +3310,8 @@ void DrasculaEngine::cursor_mesa() {
pos_cursor[0] = 225;
pos_cursor[1] = 56;
- pos_cursor[2] = x_raton - 20;
- pos_cursor[3] = y_raton - 12;
+ pos_cursor[2] = mouseX - 20;
+ pos_cursor[3] = mouseY - 12;
pos_cursor[4] = 40;
pos_cursor[5] = 25;
@@ -3198,80 +3331,12 @@ void DrasculaEngine::introduce_nombre() {
key = getscan();
delay(70);
if (key != 0) {
- if (key == Common::KEYCODE_q)
- select2[v] = 'q';
- else if (key == Common::KEYCODE_w)
- select2[v] = 'w';
- else if (key == Common::KEYCODE_e)
- select2[v] = 'e';
- else if (key == Common::KEYCODE_r)
- select2[v] = 'r';
- else if (key == Common::KEYCODE_t)
- select2[v] = 't';
- else if (key == Common::KEYCODE_y)
- select2[v] = 'y';
- else if (key == Common::KEYCODE_u)
- select2[v] = 'u';
- else if (key == Common::KEYCODE_i)
- select2[v] = 'i';
- else if (key == Common::KEYCODE_o)
- select2[v] = 'o';
- else if (key == Common::KEYCODE_p)
- select2[v] = 'p';
- else if (key == Common::KEYCODE_a)
- select2[v] = 'a';
- else if (key == Common::KEYCODE_s)
- select2[v] = 's';
- else if (key == Common::KEYCODE_d)
- select2[v] = 'd';
- else if (key == Common::KEYCODE_f)
- select2[v] = 'f';
- else if (key == Common::KEYCODE_g)
- select2[v] = 'g';
- else if (key == Common::KEYCODE_h)
- select2[v] = 'h';
- else if (key == Common::KEYCODE_j)
- select2[v] = 'j';
- else if (key == Common::KEYCODE_k)
- select2[v] = 'k';
- else if (key == Common::KEYCODE_l)
- select2[v] = 'l';
+ if (key >= 0 && key <= 0xFF && isalpha(key))
+ select2[v] = tolower(key);
else if ((key == Common::KEYCODE_LCTRL) || (key == Common::KEYCODE_RCTRL))
select2[v] = '\164';
- else if (key == Common::KEYCODE_z)
- select2[v] = 'z';
- else if (key == Common::KEYCODE_x)
- select2[v] = 'x';
- else if (key == Common::KEYCODE_c)
- select2[v] = 'c';
- else if (key == Common::KEYCODE_v)
- select2[v] = 'v';
- else if (key == Common::KEYCODE_b)
- select2[v] = 'b';
- else if (key == Common::KEYCODE_n)
- select2[v] = 'n';
- else if (key == Common::KEYCODE_m)
- select2[v] = 'm';
- else if (key == Common::KEYCODE_1)
- select2[v] = '1';
- else if (key == Common::KEYCODE_2)
- select2[v] = '2';
- else if (key == Common::KEYCODE_3)
- select2[v] = '3';
- else if (key == Common::KEYCODE_4)
- select2[v] = '4';
- else if (key == Common::KEYCODE_5)
- select2[v] = '5';
- else if (key == Common::KEYCODE_6)
- select2[v] = '6';
- else if (key == Common::KEYCODE_7)
- select2[v] = '7';
- else if (key == Common::KEYCODE_8)
- select2[v] = '8';
- else if (key == Common::KEYCODE_9)
- select2[v] = '9';
- else if (key == Common::KEYCODE_0)
- select2[v] = '0';
+ else if (key >= Common::KEYCODE_0 && key <= Common::KEYCODE_9)
+ select2[v] = key;
else if (key == Common::KEYCODE_SPACE)
select2[v] = '\167';
else if (key == ESC)
@@ -3303,8 +3368,8 @@ void DrasculaEngine::introduce_nombre() {
void DrasculaEngine::para_grabar(char nom_game[]) {
saveGame(nom_game);
- comienza_sound("99.als");
- fin_sound();
+ playSound("99.als");
+ stopSound();
}
void DrasculaEngine::OpenSSN(const char *Name, int Pause) {
@@ -3566,87 +3631,87 @@ char DrasculaEngine::codifica(char car) {
return ~car;
}
-void DrasculaEngine::cuadrante_1() {
- float distancia_x, distancia_y;
+void DrasculaEngine::quadrant_1() {
+ float distance_x, distance_y;
if (num_ejec == 2)
- distancia_x = hare_x - sitio_x;
+ distance_x = hare_x - sitio_x;
else
- distancia_x = hare_x + ancho_hare / 2 - sitio_x;
+ distance_x = hare_x + ancho_hare / 2 - sitio_x;
- distancia_y = (hare_y + alto_hare) - sitio_y;
+ distance_y = (hare_y + alto_hare) - sitio_y;
- if (distancia_x < distancia_y) {
+ if (distance_x < distance_y) {
direccion_hare = 0;
sentido_hare = 2;
- step_x = (int)(distancia_x / (distancia_y / PASO_HARE_Y));
+ step_x = (int)(distance_x / (distance_y / PASO_HARE_Y));
} else {
direccion_hare = 7;
sentido_hare = 0;
- step_y = (int)(distancia_y / (distancia_x / PASO_HARE_X));
+ step_y = (int)(distance_y / (distance_x / PASO_HARE_X));
}
}
-void DrasculaEngine::cuadrante_2() {
- float distancia_x, distancia_y;
+void DrasculaEngine::quadrant_2() {
+ float distance_x, distance_y;
if (num_ejec == 2)
- distancia_x = abs(hare_x + ancho_hare - sitio_x);
+ distance_x = abs(hare_x + ancho_hare - sitio_x);
else
- distancia_x = abs(hare_x + ancho_hare / 2 - sitio_x);
+ distance_x = abs(hare_x + ancho_hare / 2 - sitio_x);
- distancia_y = (hare_y + alto_hare) - sitio_y;
+ distance_y = (hare_y + alto_hare) - sitio_y;
- if (distancia_x < distancia_y) {
+ if (distance_x < distance_y) {
direccion_hare = 1;
sentido_hare = 2;
- step_x = (int)(distancia_x / (distancia_y / PASO_HARE_Y));
+ step_x = (int)(distance_x / (distance_y / PASO_HARE_Y));
} else {
direccion_hare = 2;
sentido_hare = 1;
- step_y = (int)(distancia_y / (distancia_x / PASO_HARE_X));
+ step_y = (int)(distance_y / (distance_x / PASO_HARE_X));
}
}
-void DrasculaEngine::cuadrante_3() {
- float distancia_x, distancia_y;
+void DrasculaEngine::quadrant_3() {
+ float distance_x, distance_y;
if (num_ejec == 2)
- distancia_x = hare_x - sitio_x;
+ distance_x = hare_x - sitio_x;
else
- distancia_x = hare_x + ancho_hare / 2 - sitio_x;
+ distance_x = hare_x + ancho_hare / 2 - sitio_x;
- distancia_y = sitio_y - (hare_y + alto_hare);
+ distance_y = sitio_y - (hare_y + alto_hare);
- if (distancia_x < distancia_y) {
+ if (distance_x < distance_y) {
direccion_hare = 5;
sentido_hare = 3;
- step_x = (int)(distancia_x / (distancia_y / PASO_HARE_Y));
+ step_x = (int)(distance_x / (distance_y / PASO_HARE_Y));
} else {
direccion_hare = 6;
sentido_hare = 0;
- step_y = (int)(distancia_y / (distancia_x / PASO_HARE_X));
+ step_y = (int)(distance_y / (distance_x / PASO_HARE_X));
}
}
-void DrasculaEngine::cuadrante_4() {
- float distancia_x, distancia_y;
+void DrasculaEngine::quadrant_4() {
+ float distance_x, distance_y;
if (num_ejec == 2)
- distancia_x = abs(hare_x + ancho_hare - sitio_x);
+ distance_x = abs(hare_x + ancho_hare - sitio_x);
else
- distancia_x = abs(hare_x + ancho_hare / 2 - sitio_x);
+ distance_x = abs(hare_x + ancho_hare / 2 - sitio_x);
- distancia_y = sitio_y - (hare_y + alto_hare);
+ distance_y = sitio_y - (hare_y + alto_hare);
- if (distancia_x < distancia_y) {
+ if (distance_x < distance_y) {
direccion_hare = 4;
sentido_hare = 3;
- step_x = (int)(distancia_x / (distancia_y / PASO_HARE_Y));
+ step_x = (int)(distance_x / (distance_y / PASO_HARE_Y));
} else {
direccion_hare = 3;
sentido_hare = 1;
- step_y = (int)(distancia_y / (distancia_x / PASO_HARE_X));
+ step_y = (int)(distance_y / (distance_x / PASO_HARE_X));
}
}
@@ -3664,7 +3729,7 @@ void DrasculaEngine::saveGame(char nom_game[]) {
out->writeSint32LE(sentido_hare);
for (l = 1; l < 43; l++) {
- out->writeSint32LE(objetos_que_tengo[l]);
+ out->writeSint32LE(inventoryObjects[l]);
}
for (l = 0; l < NUM_FLAGS; l++) {
@@ -3672,7 +3737,7 @@ void DrasculaEngine::saveGame(char nom_game[]) {
}
out->writeSint32LE(lleva_objeto);
- out->writeSint32LE(objeto_que_lleva);
+ out->writeSint32LE(pickedObject);
out->finalize();
if (out->ioFailed())
@@ -3690,28 +3755,16 @@ void DrasculaEngine::aumenta_num_frame() {
if (num_frame == 6)
num_frame = 0;
- if (direccion_hare == 0) {
+ if (direccion_hare == 0 || direccion_hare == 7) {
hare_x = hare_x - step_x;
hare_y = hare_y - step_y;
- } else if (direccion_hare == 7) {
- hare_x = hare_x - step_x;
- hare_y = hare_y - step_y;
- } else if (direccion_hare == 1) {
- hare_x = hare_x + step_x;
- hare_y = hare_y - step_y;
- } else if (direccion_hare == 2) {
+ } else if (direccion_hare == 1 || direccion_hare == 2) {
hare_x = hare_x + step_x;
hare_y = hare_y - step_y;
- } else if (direccion_hare == 3) {
- hare_x = hare_x + step_x;
- hare_y = hare_y + step_y;
- } else if (direccion_hare == 4) {
+ } else if (direccion_hare == 3 || direccion_hare == 4) {
hare_x = hare_x + step_x;
hare_y = hare_y + step_y;
- } else if (direccion_hare == 5) {
- hare_x = hare_x - step_x;
- hare_y = hare_y + step_y;
- } else if (direccion_hare == 6) {
+ } else if (direccion_hare == 5 || direccion_hare == 6) {
hare_x = hare_x - step_x;
hare_y = hare_y + step_y;
}
@@ -3731,8 +3784,8 @@ int DrasculaEngine::sobre_que_objeto() {
int n = 0;
for (n = 1; n < 43; n++) {
- if (x_raton > x_obj[n] && y_raton > y_obj[n]
- && x_raton < x_obj[n] + OBJWIDTH && y_raton < y_obj[n] + OBJHEIGHT)
+ if (mouseX > itemLocations[n].x && mouseY > itemLocations[n].y
+ && mouseX < itemLocations[n].x + OBJWIDTH && mouseY < itemLocations[n].y + OBJHEIGHT)
break;
}
@@ -3744,7 +3797,7 @@ bool DrasculaEngine::comprueba_banderas_menu() {
for (n = 0; n < 43; n++) {
if (sobre_que_objeto() == n) {
- h = objetos_que_tengo[n];
+ h = inventoryObjects[n];
if (h != 0)
if (banderas(h))
return true;
@@ -3756,23 +3809,23 @@ bool DrasculaEngine::comprueba_banderas_menu() {
void DrasculaEngine::conversa(const char *nom_fich) {
int h;
- int juego1 = 1, juego2 = 1, juego3 = 1, juego4 = 1;
- char frase1[78];
- char frase2[78];
- char frase3[87];
- char frase4[78];
+ int game1 = 1, game2 = 1, game3 = 1, game4 = 1;
+ char phrase1[78];
+ char phrase2[78];
+ char phrase3[87];
+ char phrase4[78];
char para_codificar[13];
- char suena1[13];
- char suena2[13];
- char suena3[13];
- char suena4[13];
- int longitud;
- int respuesta1;
- int respuesta2;
- int respuesta3;
- int usado1 = 0;
- int usado2 = 0;
- int usado3 = 0;
+ char sound1[13];
+ char sound2[13];
+ char sound3[13];
+ char sound4[13];
+ int length;
+ int answer1;
+ int answer2;
+ int answer3;
+ int used1 = 0;
+ int used2 = 0;
+ int used3 = 0;
char buffer[256];
rompo_y_salgo = 0;
@@ -3790,67 +3843,67 @@ void DrasculaEngine::conversa(const char *nom_fich) {
int size = ald->size();
getLine(ald, buffer, size);
- sscanf(buffer, "%s", frase1);
+ sscanf(buffer, "%s", phrase1);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", frase2);
+ sscanf(buffer, "%s", phrase2);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", frase3);
+ sscanf(buffer, "%s", phrase3);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", frase4);
+ sscanf(buffer, "%s", phrase4);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", suena1);
+ sscanf(buffer, "%s", sound1);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", suena2);
+ sscanf(buffer, "%s", sound2);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", suena3);
+ sscanf(buffer, "%s", sound3);
getLine(ald, buffer, size);
- sscanf(buffer, "%s", suena4);
+ sscanf(buffer, "%s", sound4);
getLine(ald, buffer, size);
- sscanf(buffer, "%d", &respuesta1);
+ sscanf(buffer, "%d", &answer1);
getLine(ald, buffer, size);
- sscanf(buffer, "%d", &respuesta2);
+ sscanf(buffer, "%d", &answer2);
getLine(ald, buffer, size);
- sscanf(buffer, "%d", &respuesta3);
+ sscanf(buffer, "%d", &answer3);
delete ald;
ald = NULL;
if (num_ejec == 2 && !strcmp(nom_fich, "op_5.cal") && flags[38] == 1 && flags[33] == 1) {
- strcpy(frase3, _text[_lang][405]);
- strcpy(suena3, "405.als");
- respuesta3 = 31;
+ strcpy(phrase3, _text[_lang][405]);
+ strcpy(sound3, "405.als");
+ answer3 = 31;
}
if (num_ejec == 6 && !strcmp(nom_fich, "op_12.cal") && flags[7] == 1) {
- strcpy(frase3, _text[_lang][273]);
- strcpy(suena3, "273.als");
- respuesta3 = 14;
+ strcpy(phrase3, _text[_lang][273]);
+ strcpy(sound3, "273.als");
+ answer3 = 14;
}
if (num_ejec == 6 && !strcmp(nom_fich, "op_12.cal") && flags[10] == 1) {
- strcpy(frase3, " cuanto queda para que acabe el partido?");
- strcpy(suena3, "274.als");
- respuesta3 = 15;
+ strcpy(phrase3, " cuanto queda para que acabe el partido?");
+ strcpy(sound3, "274.als");
+ answer3 = 15;
}
- longitud = strlen(frase1);
- for (h = 0; h < longitud; h++)
- if (frase1[h] == (char)0xa7)
- frase1[h] = ' ';
+ length = strlen(phrase1);
+ for (h = 0; h < length; h++)
+ if (phrase1[h] == (char)0xa7)
+ phrase1[h] = ' ';
- longitud = strlen(frase2);
- for (h = 0; h < longitud; h++)
- if (frase2[h] == (char)0xa7)
- frase2[h] = ' ';
+ length = strlen(phrase2);
+ for (h = 0; h < length; h++)
+ if (phrase2[h] == (char)0xa7)
+ phrase2[h] = ' ';
- longitud = strlen(frase3);
- for (h = 0; h < longitud; h++)
- if (frase3[h] == (char)0xa7)
- frase3[h] = ' ';
+ length = strlen(phrase3);
+ for (h = 0; h < length; h++)
+ if (phrase3[h] == (char)0xa7)
+ phrase3[h] = ' ';
- longitud = strlen(frase4);
- for (h = 0; h < longitud; h++)
- if (frase4[h] == (char)0xa7)
- frase4[h] = ' ';
+ length = strlen(phrase4);
+ for (h = 0; h < length; h++)
+ if (phrase4[h] == (char)0xa7)
+ phrase4[h] = ' ';
loadPic("car.alg");
decompressPic(dir_hare_fondo, 1);
@@ -3876,89 +3929,89 @@ bucle_opc:
MirarRaton();
- if (y_raton > 0 && y_raton < 9) {
- if (usado1 == 1 && _color != WHITE)
+ if (mouseY > 0 && mouseY < 9) {
+ if (used1 == 1 && _color != WHITE)
color_abc(WHITE);
- else if (usado1 == 0 && _color != LIGHT_GREEN)
+ else if (used1 == 0 && _color != LIGHT_GREEN)
color_abc(LIGHT_GREEN);
- } else if (y_raton > 8 && y_raton < 17) {
- if (usado2 == 1 && _color != WHITE)
+ } else if (mouseY > 8 && mouseY < 17) {
+ if (used2 == 1 && _color != WHITE)
color_abc(WHITE);
- else if (usado2 == 0 && _color != LIGHT_GREEN)
+ else if (used2 == 0 && _color != LIGHT_GREEN)
color_abc(LIGHT_GREEN);
- } else if (y_raton > 16 && y_raton < 25) {
- if (usado3 == 1 && _color != WHITE)
+ } else if (mouseY > 16 && mouseY < 25) {
+ if (used3 == 1 && _color != WHITE)
color_abc(WHITE);
- else if (usado3 == 0 && _color != LIGHT_GREEN)
+ else if (used3 == 0 && _color != LIGHT_GREEN)
color_abc(LIGHT_GREEN);
} else if (_color != LIGHT_GREEN)
color_abc(LIGHT_GREEN);
- if (y_raton > 0 && y_raton < 9)
- juego1 = 2;
- else if (y_raton > 8 && y_raton < 17)
- juego2 = 2;
- else if (y_raton > 16 && y_raton < 25)
- juego3 = 2;
- else if (y_raton > 24 && y_raton < 33)
- juego4 = 2;
+ if (mouseY > 0 && mouseY < 9)
+ game1 = 2;
+ else if (mouseY > 8 && mouseY < 17)
+ game2 = 2;
+ else if (mouseY > 16 && mouseY < 25)
+ game3 = 2;
+ else if (mouseY > 24 && mouseY < 33)
+ game4 = 2;
- print_abc_opc(frase1, 1, 2, juego1);
- print_abc_opc(frase2, 1, 10, juego2);
- print_abc_opc(frase3, 1, 18, juego3);
- print_abc_opc(frase4, 1, 26, juego4);
+ print_abc_opc(phrase1, 1, 2, game1);
+ print_abc_opc(phrase2, 1, 10, game2);
+ print_abc_opc(phrase3, 1, 18, game3);
+ print_abc_opc(phrase4, 1, 26, game4);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- if ((boton_izq == 1) && (juego1 == 2)) {
+ if ((button_izq == 1) && (game1 == 2)) {
delay(100);
- usado1 = 1;
- talk(frase1, suena1);
+ used1 = 1;
+ talk(phrase1, sound1);
if (num_ejec == 3)
grr();
else
- responde(respuesta1);
- } else if ((boton_izq == 1) && (juego2 == 2)) {
+ response(answer1);
+ } else if ((button_izq == 1) && (game2 == 2)) {
delay(100);
- usado2 = 1;
- talk(frase2, suena2);
+ used2 = 1;
+ talk(phrase2, sound2);
if (num_ejec == 3)
grr();
else
- responde(respuesta2);
- } else if ((boton_izq == 1) && (juego3 == 2)) {
+ response(answer2);
+ } else if ((button_izq == 1) && (game3 == 2)) {
delay(100);
- usado3 = 1;
- talk(frase3, suena3);
+ used3 = 1;
+ talk(phrase3, sound3);
if (num_ejec == 3)
grr();
else
- responde(respuesta3);
- } else if ((boton_izq == 1) && (juego4 == 2)) {
+ response(answer3);
+ } else if ((button_izq == 1) && (game4 == 2)) {
delay(100);
- talk(frase4, suena4);
+ talk(phrase4, sound4);
rompo_y_salgo = 1;
}
- if (boton_izq == 1) {
+ if (button_izq == 1) {
delay(100);
color_abc(LIGHT_GREEN);
}
- if (usado1 == 0)
- juego1 = 1;
+ if (used1 == 0)
+ game1 = 1;
else
- juego1 = 3;
- if (usado2 == 0)
- juego2 = 1;
+ game1 = 3;
+ if (used2 == 0)
+ game2 = 1;
else
- juego2 = 3;
- if (usado3 == 0)
- juego3 = 1;
+ game2 = 3;
+ if (used3 == 0)
+ game3 = 1;
else
- juego3 = 3;
+ game3 = 3;
- juego4 = 1;
+ game4 = 1;
if (rompo_y_salgo == 0)
goto bucle_opc;
@@ -3972,16 +4025,16 @@ bucle_opc:
withoutVerb();
}
-void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_pantalla, int juego) {
+void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_pantalla, int game) {
int pos_texto[6];
- int y_de_signos, y_de_letra, x_de_letra = 0, h, longitud;
- longitud = strlen(said);
+ int y_de_signos, y_de_letra, x_de_letra = 0, h, length;
+ length = strlen(said);
- for (h = 0; h < longitud; h++) {
- if (juego == 1) {
+ for (h = 0; h < length; h++) {
+ if (game == 1) {
y_de_letra = Y_ABC_OPC_1;
y_de_signos = Y_SIGNOS_OPC_1;
- } else if (juego == 3) {
+ } else if (game == 3) {
y_de_letra = Y_ABC_OPC_3;
y_de_signos = Y_SIGNOS_OPC_3;
} else {
@@ -3992,14 +4045,22 @@ void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_panta
int c = toupper(said[h]);
if (c == 'A')
x_de_letra = X_A_OPC;
+ else if (c == '\265') x_de_letra = X_A_OPC;
+ else if (c == '\267') x_de_letra = X_A_OPC;
+ else if (c == '\266') x_de_letra = X_A_OPC;
else if (c == 'B')
x_de_letra = X_B_OPC;
else if (c == 'C')
x_de_letra = X_C_OPC;
+ else if (c == '\200') x_de_letra = X_C_OPC;
+ else if (c == '\207') x_de_letra = X_C_OPC;
else if (c == 'D')
x_de_letra = X_D_OPC;
else if (c == 'E')
x_de_letra = X_E_OPC;
+ else if (c == '\220') x_de_letra = X_E_OPC;
+ else if (c == '\324') x_de_letra = X_E_OPC;
+ else if (c == '\322') x_de_letra = X_E_OPC;
else if (c == 'F')
x_de_letra = X_F_OPC;
else if (c == 'G')
@@ -4008,6 +4069,9 @@ void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_panta
x_de_letra = X_H_OPC;
else if (c == 'I')
x_de_letra = X_I_OPC;
+ else if (c == '\326') x_de_letra = X_I_OPC;
+ else if (c == '\336') x_de_letra = X_I_OPC;
+ else if (c == '\327') x_de_letra = X_I_OPC;
else if (c == 'J')
x_de_letra = X_J_OPC;
else if (c == 'K')
@@ -4018,10 +4082,14 @@ void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_panta
x_de_letra = X_M_OPC;
else if (c == 'N')
x_de_letra = X_N_OPC;
+ else if (c == '\047') x_de_letra = X_GN_OPC;
else if (c == 'O')
x_de_letra = X_O_OPC;
else if (c == 'P')
x_de_letra = X_P_OPC;
+ else if (c == '\340') x_de_letra = X_O_OPC;
+ else if (c == '\342') x_de_letra = X_O_OPC;
+ else if (c == '\343') x_de_letra = X_O_OPC;
else if (c == 'Q')
x_de_letra = X_Q_OPC;
else if (c == 'R')
@@ -4032,6 +4100,9 @@ void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_panta
x_de_letra = X_T_OPC;
else if (c == 'U')
x_de_letra = X_U_OPC;
+ else if (c == '\353') x_de_letra = X_U_OPC;
+ else if (c == '\352') x_de_letra = X_U_OPC;
+ else if (c == '\351') x_de_letra = X_U_OPC;
else if (c == 'V')
x_de_letra = X_V_OPC;
else if (c == 'W')
@@ -4123,7 +4194,7 @@ void DrasculaEngine::print_abc_opc(const char *said, int x_pantalla, int y_panta
}
}
-void DrasculaEngine::responde(int funcion) {
+void DrasculaEngine::response(int funcion) {
if (num_ejec == 1) {
if (funcion == 10)
talk_borracho(_textb[_lang][1], "B1.als");
@@ -4205,25 +4276,25 @@ void DrasculaEngine::responde(int funcion) {
}
void DrasculaEngine::suma_objeto(int osj) {
- int h, puesto = 0;
+ int h, position = 0;
for (h = 1; h < 43; h++) {
- if (objetos_que_tengo[h] == osj)
- puesto = 1;
+ if (inventoryObjects[h] == osj)
+ position = 1;
}
- if (puesto == 0) {
+ if (position == 0) {
for (h = 1; h < 43; h++) {
- if (objetos_que_tengo[h] == 0) {
- objetos_que_tengo[h] = osj;
- puesto = 1;
+ if (inventoryObjects[h] == 0) {
+ inventoryObjects[h] = osj;
+ position = 1;
break;
}
}
}
}
-void DrasculaEngine::fin_sound_corte() {
+void DrasculaEngine::stopSound_corte() {
if (hay_sb == 1) {
ctvd_stop();
delete sku;
@@ -4284,69 +4355,69 @@ void DrasculaEngine::updateData() {
if (num_ejec == 1) {
// nothing
} else if (num_ejec == 2) {
- if (!strcmp(num_room,"2.alg") && flags[40] == 0)
+ if (roomNumber == 2 && flags[40] == 0)
visible[3] = 0;
- else if (!strcmp(num_room, "3.alg") && flags[3] == 1)
+ else if (roomNumber == 3 && flags[3] == 1)
visible[8] = 0;
- else if (!strcmp(num_room, "6.alg") && flags[1] == 1 && flags[10] == 0) {
+ else if (roomNumber == 6 && flags[1] == 1 && flags[10] == 0) {
visible[2] = 0;
visible[4] = 1;
- } else if (!strcmp(num_room, "7.alg") && flags[35] == 1)
+ } else if (roomNumber == 7 && flags[35] == 1)
visible[3] = 0;
- else if (!strcmp(num_room, "14.alg") && flags[5] == 1)
+ else if (roomNumber == 14 && flags[5] == 1)
visible[4] = 0;
- else if (!strcmp(num_room, "18.alg") && flags[28] == 1)
+ else if (roomNumber == 18 && flags[28] == 1)
visible[2] = 0;
} else if (num_ejec == 3) {
// nothing
} else if (num_ejec == 4) {
- if (!strcmp(num_room, "23.alg") && flags[0] == 0 && flags[11] == 0)
+ if (roomNumber == 23 && flags[0] == 0 && flags[11] == 0)
visible[2] = 1;
- if (!strcmp(num_room, "23.alg") && flags[0] == 1 && flags[11] == 0)
+ if (roomNumber == 23 && flags[0] == 1 && flags[11] == 0)
visible[2] = 0;
- if (!strcmp(num_room, "21.alg") && flags[10] == 1)
+ if (roomNumber == 21 && flags[10] == 1)
visible[2] = 0;
- if (!strcmp(num_room, "22.alg") && flags[26] == 1) {
+ if (roomNumber == 22 && flags[26] == 1) {
visible[2] = 0;
visible[1] = 1;
}
- if (!strcmp(num_room, "22.alg") && flags[27] == 1)
+ if (roomNumber == 22 && flags[27] == 1)
visible[3] = 0;
- if (!strcmp(num_room, "26.alg") && flags[21] == 0)
+ if (roomNumber == 26 && flags[21] == 0)
strcpy(objName[2], _textmisc[_lang][0]);
- if (!strcmp(num_room, "26.alg") && flags[18] == 1)
+ if (roomNumber == 26 && flags[18] == 1)
visible[2] = 0;
- if (!strcmp(num_room, "26.alg") && flags[12] == 1)
+ if (roomNumber == 26 && flags[12] == 1)
visible[1] = 0;
- if (!strcmp(num_room, "35.alg") && flags[14] == 1)
+ if (roomNumber == 35 && flags[14] == 1)
visible[2] = 0;
- if (!strcmp(num_room, "35.alg") && flags[17] == 1)
+ if (roomNumber == 35 && flags[17] == 1)
visible[3] = 1;
- if (!strcmp(num_room, "35.alg") && flags[15] == 1)
+ if (roomNumber == 35 && flags[15] == 1)
visible[1] = 0;
} else if (num_ejec == 5) {
- if (!strcmp(num_room,"49.alg") && flags[6] == 1)
+ if (roomNumber == 49 && flags[6] == 1)
visible[2] = 0;
- if (!strcmp(num_room,"49.alg") && flags[6] == 0)
+ if (roomNumber == 49 && flags[6] == 0)
visible[1] = 0;
- if (!strcmp(num_room,"49.alg") && flags[6] == 1)
+ if (roomNumber == 49 && flags[6] == 1)
visible[1] = 1;
- if (!strcmp(num_room,"45.alg") && flags[6] == 1)
+ if (roomNumber == 45 && flags[6] == 1)
visible[3] = 1;
- if (!strcmp(num_room,"53.alg") && flags[2] == 1)
+ if (roomNumber == 53 && flags[2] == 1)
visible[3] = 0;
- if (!strcmp(num_room,"54.alg") && flags[13] == 1)
+ if (roomNumber == 54 && flags[13] == 1)
visible[3] = 0;
- if (!strcmp(num_room,"55.alg") && flags[8] == 1)
+ if (roomNumber == 55 && flags[8] == 1)
visible[1] = 0;
} else if (num_ejec == 6) {
- if ((!strcmp(num_room, "58.alg")) && flags[8] == 0)
+ if (roomNumber == 58 && flags[8] == 0)
isDoor[1] = 0;
- if ((!strcmp(num_room, "58.alg")) && flags[8] == 1)
+ if (roomNumber == 58 && flags[8] == 1)
isDoor[1] = 1;
- if (!strcmp(num_room, "59.alg"))
+ if (roomNumber == 59)
isDoor[1] = 0;
- if (!strcmp(num_room, "60.alg")) {
+ if (roomNumber == 60) {
sentido_dr = 0;
x_dr = 155;
y_dr = 69;
@@ -4465,23 +4536,23 @@ comienza:
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
-void DrasculaEngine::openDoor(int nflag, int n_puerta) {
+void DrasculaEngine::openDoor(int nflag, int doorNum) {
if (flags[nflag] == 0) {
if (num_ejec == 1 /*|| num_ejec == 4*/) {
if (nflag != 7) {
- comienza_sound("s3.als");
+ playSound("s3.als");
flags[nflag] = 1;
}
} else {
- comienza_sound("s3.als");
+ playSound("s3.als");
flags[nflag] = 1;
}
- if (n_puerta != NO_DOOR)
- puertas_cerradas(n_puerta);
+ if (doorNum != NO_DOOR)
+ puertas_cerradas(doorNum);
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
+ stopSound();
withoutVerb();
}
}
@@ -4490,8 +4561,8 @@ void DrasculaEngine::mapa() {
int l, veo = 0;
for (l = 0; l < numRoomObjs; l++) {
- if (x_raton > x1[l] && y_raton > y1[l]
- && x_raton < x2[l] && y_raton < y2[l]
+ if (mouseX > x1[l] && mouseY > y1[l]
+ && mouseX < x2[l] && mouseY < y2[l]
&& visible[l] == 1) {
strcpy(texto_nombre, objName[l]);
hay_nombre = 1;
@@ -4504,8 +4575,7 @@ void DrasculaEngine::mapa() {
}
void DrasculaEngine::grr() {
- int longitud;
- longitud = 30;
+ int length = 30;
color_abc(DARK_GREEN);
@@ -4539,8 +4609,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -4551,7 +4621,7 @@ bucless:
void DrasculaEngine::activa_pendulo() {
flags[1] = 2;
hare_se_ve = 0;
- strcpy(num_room, "102.alg");
+ roomNumber = 102;
loadPic("102.alg");
decompressPic(dir_dibujo1, HALF_PAL);
loadPic("an_p1.alg");
@@ -4566,15 +4636,15 @@ void DrasculaEngine::activa_pendulo() {
conta_ciego_vez = vez();
}
-void DrasculaEngine::cierra_puerta(int nflag, int n_puerta) {
+void DrasculaEngine::closeDoor(int nflag, int doorNum) {
if (flags[nflag] == 1) {
- comienza_sound("s4.als");
+ playSound("s4.als");
flags[nflag] = 0;
- if (n_puerta != NO_DOOR)
- puertas_cerradas(n_puerta);
+ if (doorNum != NO_DOOR)
+ puertas_cerradas(doorNum);
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
+ stopSound();
withoutVerb();
}
}
diff --git a/engines/drascula/drascula.h b/engines/drascula/drascula.h
index 5cbc1fd403..512ebb9950 100644
--- a/engines/drascula/drascula.h
+++ b/engines/drascula/drascula.h
@@ -56,9 +56,20 @@ enum Languages {
kItalian = 4
};
+enum Verbs {
+ kVerbDefault = -1,
+ kVerbLook = 1,
+ kVerbPick = 2,
+ kVerbOpen = 3,
+ kVerbClose = 4,
+ kVerbTalk = 5,
+ kVerbMove = 6
+};
+
#define TEXTD_START 68
struct DrasculaGameDescription;
+struct RoomTalkAction;
#define NUM_SAVES 10
#define NUM_FLAGS 50
@@ -72,110 +83,19 @@ struct DrasculaGameDescription;
#define F8 0x42
#define F9 0x43
#define F10 0x44
-#define LOOK 1
-#define PICK 2
-#define OPEN 3
-#define CLOSE 4
-#define TALK 5
-#define MOVE 6
#define DIF_MASK 55
#define OBJWIDTH 40
#define OBJHEIGHT 25
-#define X_OBJ1 5
-#define Y_OBJ1 10
-#define X_OBJ2 50
-#define Y_OBJ2 10
-#define X_OBJ3 95
-#define Y_OBJ3 10
-#define X_OBJ4 140
-#define Y_OBJ4 10
-#define X_OBJ5 185
-#define Y_OBJ5 10
-#define X_OBJ6 230
-#define Y_OBJ6 10
-#define X_OBJ7 275
-#define Y_OBJ7 10
-#define X_OBJ8 5
-#define Y_OBJ8 40
-#define X_OBJ9 50
-#define Y_OBJ9 40
-#define X_OBJ10 95
-#define Y_OBJ10 40
-#define X_OBJ11 140
-#define Y_OBJ11 40
-#define X_OBJ12 185
-#define Y_OBJ12 40
-#define X_OBJ13 230
-#define Y_OBJ13 40
-#define X_OBJ14 275
-#define Y_OBJ14 40
-#define X_OBJ15 5
-#define Y_OBJ15 70
-#define X_OBJ16 50
-#define Y_OBJ16 70
-#define X_OBJ17 95
-#define Y_OBJ17 70
-#define X_OBJ18 140
-#define Y_OBJ18 70
-#define X_OBJ19 185
-#define Y_OBJ19 70
-#define X_OBJ20 230
-#define Y_OBJ20 70
-#define X_OBJ21 275
-#define Y_OBJ21 70
-#define X_OBJ22 5
-#define Y_OBJ22 100
-#define X_OBJ23 50
-#define Y_OBJ23 100
-#define X_OBJ24 95
-#define Y_OBJ24 100
-#define X_OBJ25 140
-#define Y_OBJ25 100
-#define X_OBJ26 185
-#define Y_OBJ26 100
-#define X_OBJ27 230
-#define Y_OBJ27 100
-#define X_OBJ28 275
-#define Y_OBJ28 100
-#define X_OBJ29 5
-#define Y_OBJ29 130
-#define X_OBJ30 50
-#define Y_OBJ30 130
-#define X_OBJ31 95
-#define Y_OBJ31 130
-#define X_OBJ32 140
-#define Y_OBJ32 130
-#define X_OBJ33 185
-#define Y_OBJ33 130
-#define X_OBJ34 230
-#define Y_OBJ34 130
-#define X_OBJ35 275
-#define Y_OBJ35 130
-#define X_OBJ36 5
-#define Y_OBJ36 160
-#define X_OBJ37 50
-#define Y_OBJ37 160
-#define X_OBJ38 95
-#define Y_OBJ38 160
-#define X_OBJ39 140
-#define Y_OBJ39 160
-#define X_OBJ40 185
-#define Y_OBJ40 160
-#define X_OBJ41 230
-#define Y_OBJ41 160
-#define X_OBJ42 275
-#define Y_OBJ42 160
-#define X_OBJ43 275
-#define Y_OBJ43 160
-
#define DIF_MASK_HARE 72
#define DIF_MASK_ABC 22
#define CHAR_WIDTH 8
#define CHAR_HEIGHT 6
#define Y_ABC 158
+#define Y_ABC_ESP 149
#define Y_SIGNOS 169
+#define Y_SIGNOS_ESP 160
#define Y_ACENTOS 180
#define X_A 6
@@ -356,6 +276,7 @@ public:
uint32 getFeatures() const;
uint16 getVersion() const;
Common::Platform getPlatform() const;
+ Common::Language getLanguage() const;
void updateEvents();
Audio::SoundHandle _soundHandle;
@@ -380,7 +301,7 @@ public:
void copyRectClip(int *Array, byte *src, byte *dest);
void updateScreen(int xorg, int yorg, int xdes, int ydes, int width, int height, byte *buffer);
- DacPalette256 palJuego;
+ DacPalette256 gamePalette;
DacPalette256 palHare;
DacPalette256 palHareClaro;
DacPalette256 palHareOscuro;
@@ -406,7 +327,8 @@ public:
int hay_sb;
int nivel_osc, previousMusic, roomMusic;
- char num_room[20], roomDisk[20];
+ int roomNumber;
+ char roomDisk[20];
char currentData[20];
int numRoomObjs;
char fondo_y_menu[20];
@@ -416,11 +338,11 @@ public:
int num_obj[40], visible[40], isDoor[40];
int sitiobj_x[40], sitiobj_y[40], sentidobj[40];
- int objetos_que_tengo[43];
+ int inventoryObjects[43];
char alapantallakeva[40][20];
int x_alakeva[40], y_alakeva[40], sentido_alkeva[40], alapuertakeva[40];
int x1[40], y1[40], x2[40], y2[40];
- int lleva_objeto, objeto_que_lleva;
+ int lleva_objeto, pickedObject;
int withVoices;
int menu_bar, menu_scr, hay_nombre;
char texto_nombre[20];
@@ -444,7 +366,7 @@ public:
int sentido_final, anda_a_objeto;
int obj_saliendo;
int diff_vez, conta_vez;
- int hay_respuesta;
+ int hay_answer;
int conta_ciego_vez;
int cambio_de_color;
int rompo_y_salgo;
@@ -469,15 +391,17 @@ public:
int corta_musica;
char select[23];
int hay_seleccion;
- int x_raton;
- int y_raton;
- int y_raton_ant;
- int boton_izq;
- int boton_dch;
+ int mouseX;
+ int mouseY;
+ int mouseY_ant;
+ int button_izq;
+ int button_dch;
bool escoba();
void black();
+ void talk_vb(int);
void talk_vb(const char *, const char *);
+ void talk_vbpuerta(int);
void talk_vbpuerta(const char *said, const char *filename);
void talk_ciego(const char *, const char *, const char *);
void talk_hacker(const char *, const char *);
@@ -487,7 +411,7 @@ public:
void pon_vb();
void lleva_vb(int punto_x);
void hipo_sin_nadie(int counter);
- void openDoor(int nflag, int n_puerta);
+ void openDoor(int nflag, int doorNum);
void mapa();
void animation_1_1();
void animation_2_1();
@@ -598,15 +522,16 @@ public:
char LimitaVGA(char valor);
void color_abc(int cl);
void centra_texto(const char *,int,int);
- void comienza_sound(const char *);
- void anima(const char *animation, int FPS);
- void fin_sound_corte();
+ void playSound(const char *);
+ bool anima(const char *animation, int FPS);
+ void stopSound_corte();
void FundeAlNegro(int VelocidadDeFundido);
void pause(int);
void talk_dr_grande(const char *said, const char *filename);
void pon_igor();
void pon_bj();
void pon_dr();
+ void talkInit(const char *filename);
void talk_igor_dch(const char *said, const char *filename);
void talk_dr_dch(const char *said, const char *filename);
void talk_dr_izq(const char *said, const char *filename);
@@ -616,19 +541,21 @@ public:
void talk_igorpuerta(const char *said, const char *filename);
void talk_igor_peluca(const char *said, const char *filename);
void hipo(int);
- void fin_sound();
+ void stopSound();
+ void talk_bj(int);
void talk_bj(const char *, const char *);
void talk_baul(const char *said, const char *filename);
+ void talk(int);
void talk(const char *, const char *);
void talk_sinc(const char *, const char *, const char *);
- void cierra_puerta(int nflag, int n_puerta);
+ void closeDoor(int nflag, int doorNum);
void playMusic(int p);
void stopMusic();
int musicStatus();
void updateRoom();
bool carga_partida(const char *);
void puertas_cerradas(int);
- void animafin_sound_corte();
+ void animastopSound_corte();
void color_hare();
void funde_hare(int oscuridad);
void paleta_hare_claro();
@@ -684,10 +611,10 @@ public:
int vez();
void reduce_hare_chico(int, int, int, int, int, int, int, byte *, byte *);
char codifica(char);
- void cuadrante_1();
- void cuadrante_2();
- void cuadrante_3();
- void cuadrante_4();
+ void quadrant_1();
+ void quadrant_2();
+ void quadrant_3();
+ void quadrant_4();
void update_62();
void update_62_pre();
void update_63();
@@ -695,6 +622,7 @@ public:
void aumenta_num_frame();
int sobre_que_objeto();
bool comprueba_banderas_menu();
+ bool roomParse(RoomTalkAction*, int);
void room_0();
void room_1(int);
void room_2(int);
@@ -728,7 +656,7 @@ public:
void room_63(int);
void conversa(const char *);
void print_abc_opc(const char *, int, int, int);
- void responde(int);
+ void response(int);
void talk_borracho(const char *said, const char *filename);
void talk_pianista(const char *said, const char *filename);
@@ -822,6 +750,7 @@ public:
void talk_pen(const char *, const char *);
void talk_pen2(const char *, const char *);
void talk_taber2(const char *, const char *);
+ void talk_bj_cama(int);
void talk_bj_cama(const char *said, const char * filename);
void talk_htel(const char *said, const char *filename);
@@ -842,7 +771,7 @@ extern const char *_textvb[][63];
extern const char *_textsys[][4];
extern const char *_texthis[][5];
extern const char *_textverbs[][6];
-extern const char *_textmisc[][1];
+extern const char *_textmisc[][2];
extern const char *_textd1[][11];
} // End of namespace Drascula
diff --git a/engines/drascula/rooms.cpp b/engines/drascula/rooms.cpp
index 7f6fa8f8b3..50f1110c23 100644
--- a/engines/drascula/rooms.cpp
+++ b/engines/drascula/rooms.cpp
@@ -32,132 +32,252 @@ static const char mirar_v[3][14] = {"100.als", "101.als", "54.als"};
static const int poder_t[6] = {11, 109, 111, 110, 115, 116};
static const char poder_v[6][14] = {"11.als", "109.als", "111.als", "110.als", "115.als", "116.als"};
+struct RoomTalkAction {
+ int num;
+ int action;
+ int objectID;
+ int speechID;
+};
+
+// TODO: move these elsewhere, or in a .dat file?
+// Note: default action needs to be LAST for each group
+// of actions with the same number
+RoomTalkAction room0Actions[] = {
+ // num action object speech
+ { 1, kVerbLook, -1, 54 },
+ { 1, kVerbMove, -1, 19 },
+ { 1, kVerbPick, -1, 11 },
+ { 1, kVerbOpen, -1, 9 },
+ { 1, kVerbClose, -1, 9 },
+ { 1, kVerbTalk, -1, 16 },
+ { 1, kVerbDefault, -1, 11 },
+ // -------------------------------
+ { 2, kVerbMove, -1, 19 },
+ { 2, kVerbOpen, -1, 9 },
+ { 2, kVerbClose, -1, 9 },
+ { 2, kVerbTalk, -1, 16 },
+ // -------------------------------
+ { 3, kVerbLook, -1, 316 },
+ { 3, kVerbMove, -1, 317 },
+ { 3, kVerbPick, -1, 318 },
+ { 3, kVerbOpen, -1, 319 },
+ { 3, kVerbClose, -1, 319 },
+ { 3, kVerbTalk, -1, 320 },
+ { 3, kVerbDefault, -1, 318 },
+ // -------------------------------
+ { 4, kVerbMove, -1, 19 },
+ { 4, kVerbOpen, -1, 9 },
+ { 4, kVerbClose, -1, 9 },
+ { 4, kVerbTalk, -1, 16 },
+ // -------------------------------
+ { 5, kVerbOpen, -1, 9 },
+ { 5, kVerbClose, -1, 9 },
+ { 5, kVerbTalk, -1, 16 },
+ // -------------------------------
+ { 6, kVerbMove, -1, 19 },
+ { 6, kVerbOpen, -1, 9 },
+ { 6, kVerbClose, -1, 9 },
+ { 6, kVerbTalk, -1, 16 }
+};
+
+RoomTalkAction room1Actions[] = {
+ // num action object speech
+ { -1, kVerbPick, 118, 5 },
+ { -1, kVerbOpen, 118, 3 },
+ { -1, kVerbClose, 118, 4 },
+ { -1, kVerbTalk, 118, 6 },
+ // -------------------------------
+ { -1, kVerbLook, 119, 8 },
+ { -1, kVerbMove, 119, 13 },
+ { -1, kVerbClose, 119, 10 },
+ { -1, kVerbTalk, 119, 12 },
+ // -------------------------------
+ { -1, kVerbMove, 120, 13 },
+ { -1, kVerbOpen, 120, 18 },
+ { -1, kVerbTalk, 120, 15 }
+};
+
+RoomTalkAction room3Actions[] = {
+ // num action object speech
+ { -1, kVerbLook, 129, 21 },
+ { -1, kVerbPick, 129, 5 },
+ { -1, kVerbMove, 129, 24 },
+ { -1, kVerbOpen, 129, 22 },
+ { -1, kVerbClose, 129, 10 },
+ // -------------------------------
+ { -1, kVerbLook, 131, 27 },
+ { -1, kVerbPick, 131, 5 },
+ { -1, kVerbMove, 131, 24 },
+ { -1, kVerbOpen, 131, 22 },
+ { -1, kVerbClose, 131, 10 },
+ { -1, kVerbTalk, 131, 23 },
+ // -------------------------------
+ { -1, kVerbLook, 132, 28 },
+ { -1, kVerbPick, 132, 5 },
+ { -1, kVerbMove, 132, 24 },
+ { -1, kVerbOpen, 132, 22 },
+ { -1, kVerbClose, 132, 10 },
+ { -1, kVerbTalk, 132, 23 },
+ // -------------------------------
+ { -1, kVerbLook, 133, 321 },
+ { -1, kVerbPick, 133, 31 },
+ { -1, kVerbMove, 133, 34 },
+ { -1, kVerbOpen, 133, 30 },
+ { -1, kVerbClose, 133, 10 },
+ // -------------------------------
+ { -1, kVerbLook, 166, 55 },
+ { -1, kVerbPick, 166, 7 },
+ // -------------------------------
+ { -1, kVerbLook, 211, 184 }
+};
+
+RoomTalkAction room4Actions[] = {
+ // num action object speech
+ { -1, kVerbLook, 189, 182 },
+ // -------------------------------
+ { -1, kVerbLook, 207, 175 },
+ { -1, kVerbTalk, 207, 176 },
+ // -------------------------------
+ { -1, kVerbLook, 208, 177 },
+ // -------------------------------
+ { -1, kVerbLook, 209, 179 },
+ // -------------------------------
+ { -1, kVerbLook, 210, 180 },
+ { -1, kVerbOpen, 210, 181 }
+};
+
+RoomTalkAction room5Actions[] = {
+ // num action object speech
+ { -1, kVerbMove, 136, 13 },
+ { -1, kVerbOpen, 136, 18 },
+ { -1, kVerbTalk, 136, 15 },
+ // -------------------------------
+ { -1, kVerbLook, 212, 187 },
+ { -1, kVerbTalk, 212, 188 },
+ // -------------------------------
+ { -1, kVerbLook, 213, 189 },
+ { -1, kVerbOpen, 213, 190 }
+};
+
+RoomTalkAction room6Actions[] = {
+ // num action object speech
+ { -1, kVerbPick, 144, 43 },
+ // -------------------------------
+ { -1, kVerbLook, 138, 35 },
+ { -1, kVerbTalk, 138, 6 },
+ // -------------------------------
+ { -1, kVerbLook, 143, 37 },
+ { -1, kVerbPick, 143, 7 },
+ { -1, kVerbMove, 143, 7 },
+ { -1, kVerbTalk, 143, 38 },
+ // -------------------------------
+ { -1, kVerbLook, 139, 36 },
+ // -------------------------------
+ { -1, kVerbLook, 140, 147 }
+};
+
+RoomTalkAction room12Actions[] = {
+ // num action object speech
+ { -1, kVerbLook, 154, 329 },
+ { -1, kVerbTalk, 154, 330 },
+ // -------------------------------
+ { -1, kVerbMove, 155, 48 },
+ { -1, kVerbTalk, 155, 331 },
+ // -------------------------------
+ { -1, kVerbLook, 156, 35 },
+ { -1, kVerbMove, 156, 48 },
+ { -1, kVerbTalk, 156, 50 },
+};
+
+bool DrasculaEngine::roomParse(RoomTalkAction* roomActions, int fl) {
+ bool didAction = false;
+
+ for (int i = 0; i < ARRAYSIZE(roomActions); i++) {
+ if (roomActions[i].num == num_ejec ||
+ roomActions[i].num == -1) {
+ if (roomActions[i].action == pickedObject ||
+ roomActions[i].action == kVerbDefault) {
+ if (roomActions[i].objectID == fl ||
+ roomActions[i].objectID == -1) {
+ talk(roomActions[i].speechID);
+ didAction = true;
+ break;
+ }
+ }
+ }
+ }
+
+ return didAction;
+}
+
void DrasculaEngine::room_0() {
- if (num_ejec == 1) {
- if (objeto_que_lleva == LOOK)
- talk(_text[_lang][54], "54.als");
- else if (objeto_que_lleva == MOVE)
- talk(_text[_lang][19], "19.als");
- else if (objeto_que_lleva == PICK)
- talk(_text[_lang][11], "11.als");
- else if (objeto_que_lleva == OPEN)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == CLOSE)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == TALK)
- talk(_text[_lang][16], "16.als");
- else
- talk(_text[_lang][11],"11.als");
- } else if (num_ejec == 2) {
- if (objeto_que_lleva == LOOK) {
+ if (roomParse(room0Actions, -1))
+ return;
+
+ // non-default actions
+ if (num_ejec == 2) {
+ if (pickedObject == kVerbLook) {
talk(_text[_lang][mirar_t[c_mirar]], mirar_v[c_mirar]);
c_mirar++;
if (c_mirar == 3)
c_mirar = 0;
- } else if (objeto_que_lleva == MOVE) {
- talk(_text[_lang][19], "19.als");
- } else if (objeto_que_lleva == PICK) {
+ } else if (pickedObject == kVerbPick) {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
- } else if (objeto_que_lleva == OPEN)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == CLOSE)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == TALK)
- talk(_text[_lang][16], "16.als");
- else {
+ } else {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
}
- } else if (num_ejec == 3) {
- if (objeto_que_lleva == LOOK)
- talk(_text[_lang][316], "316.als");
- else if (objeto_que_lleva == MOVE)
- talk(_text[_lang][317], "317.als");
- else if (objeto_que_lleva == PICK)
- talk(_text[_lang][318], "318.als");
- else if (objeto_que_lleva == OPEN)
- talk(_text[_lang][319], "319.als");
- else if (objeto_que_lleva == CLOSE)
- talk(_text[_lang][319], "319.als");
- else if (objeto_que_lleva == TALK)
- talk(_text[_lang][320], "320.als");
- else
- talk(_text[_lang][318], "318.als");
} else if (num_ejec == 4) {
- if (objeto_que_lleva == LOOK) {
+ if (pickedObject == kVerbLook) {
talk(_text[_lang][mirar_t[c_mirar]], mirar_v[c_mirar]);
c_mirar++;
if (c_mirar == 3)
c_mirar = 0;
- } else if (objeto_que_lleva == MOVE)
- talk(_text[_lang][19], "19.als");
- else if (objeto_que_lleva == PICK) {
+ } else if (pickedObject == kVerbPick) {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
- } else if (objeto_que_lleva == OPEN)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == CLOSE)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == TALK)
- talk(_text[_lang][16], "16.als");
- else {
+ } else {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
}
} else if (num_ejec == 5) {
- if (objeto_que_lleva == LOOK) {
+ if (pickedObject == kVerbLook) {
talk(_text[_lang][mirar_t[c_mirar]], mirar_v[c_mirar]);
c_mirar++;
if (c_mirar == 3)
c_mirar = 0;
- } else if (objeto_que_lleva == MOVE)
- talk(_text[_lang][19], "19.als");
- else if (objeto_que_lleva == PICK) {
+ } else if (pickedObject == kVerbPick) {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
- } else if (objeto_que_lleva == OPEN)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == CLOSE)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == TALK)
- talk(_text[_lang][16], "16.als");
- else {
+ } else {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
}
} else if (num_ejec == 6) {
- if (objeto_que_lleva == LOOK) {
+ if (pickedObject == kVerbLook) {
talk(_text[_lang][mirar_t[c_mirar]], mirar_v[c_mirar]);
c_mirar++;
if (c_mirar == 3)
c_mirar = 0;
- } else if (objeto_que_lleva == MOVE)
- talk(_text[_lang][19], "19.als");
- else if (objeto_que_lleva == PICK) {
+ } else if (pickedObject == kVerbPick) {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
c_poder = 0;
- } else if (objeto_que_lleva == OPEN)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == CLOSE)
- talk(_text[_lang][9], "9.als");
- else if (objeto_que_lleva == TALK)
- talk(_text[_lang][16], "16.als");
- else {
+ } else {
talk(_text[_lang][poder_t[c_poder]], poder_v[c_poder]);
c_poder++;
if (c_poder == 6)
@@ -167,97 +287,37 @@ void DrasculaEngine::room_0() {
}
void DrasculaEngine::room_1(int fl) {
- if (objeto_que_lleva == LOOK && fl == 118) {
- talk(_text[_lang][1], "1.als");
+ if (roomParse(room1Actions, fl))
+ return;
+
+ if (pickedObject == kVerbLook && fl == 118) {
+ talk(1);
pause(10);
- talk(_text[_lang][2], "2.als");
- } else if (objeto_que_lleva == PICK && fl == 118)
- talk(_text[_lang][5], "5.als");
- else if (objeto_que_lleva == OPEN && fl == 118)
- talk(_text[_lang][3], "3.als");
- else if (objeto_que_lleva == CLOSE && fl == 118)
- talk(_text[_lang][4], "4.als");
- else if (objeto_que_lleva == TALK && fl == 118)
- talk(_text[_lang][6], "6.als");
- else if (objeto_que_lleva == LOOK && fl == 119)
- talk(_text[_lang][8], "8.als");
- else if (objeto_que_lleva == MOVE && fl == 119)
- talk(_text[_lang][13], "13.als");
- else if (objeto_que_lleva == CLOSE && fl == 119)
- talk(_text[_lang][10], "10.als");
- else if (objeto_que_lleva == TALK && fl == 119)
- talk(_text[_lang][12], "12.als");
- else if (objeto_que_lleva == LOOK && fl == 120 && flags[8] == 0)
- talk(_text[_lang][14], "14.als");
- else if (objeto_que_lleva == MOVE && fl == 120)
- talk(_text[_lang][13], "13.als");
- else if (objeto_que_lleva == OPEN && fl == 120)
- talk(_text[_lang][18], "18.als");
- else if (objeto_que_lleva == TALK && fl == 120)
- talk(_text[_lang][15], "15.als");
+ talk(2);
+ } else if (pickedObject == kVerbLook && fl == 120 && flags[8] == 0)
+ talk(14);
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_3(int fl) {
- if (objeto_que_lleva == LOOK && fl == 129)
- talk(_text[_lang][21], "21.als");
- else if (objeto_que_lleva == PICK && fl == 129)
- talk(_text[_lang][5], "5.als");
- else if (objeto_que_lleva == MOVE && fl == 129)
- talk(_text[_lang][24], "24.als");
- else if (objeto_que_lleva == OPEN && fl == 129)
- talk(_text[_lang][22], "22.als");
- else if (objeto_que_lleva == CLOSE && fl == 129)
- talk(_text[_lang][10], "10.als");
- else if (objeto_que_lleva == TALK && fl == 129) {
- talk(_text[_lang][23], "23.als");
+ if (roomParse(room3Actions, fl))
+ return;
+
+ if (pickedObject == kVerbTalk && fl == 129) {
+ talk(23);
pause(6);
talk_sinc(_text[_lang][50], "50.als", "11111111111144432554433");
- } else if (objeto_que_lleva == LOOK && fl == 131)
- talk(_text[_lang][27], "27.als");
- else if (objeto_que_lleva == PICK && fl == 131)
- talk(_text[_lang][5], "5.als");
- else if (objeto_que_lleva == MOVE && fl == 131)
- talk(_text[_lang][24], "24.als");
- else if (objeto_que_lleva == OPEN && fl == 131)
- talk(_text[_lang][22], "22.als");
- else if (objeto_que_lleva == CLOSE && fl == 131)
- talk(_text[_lang][10], "10.als");
- else if (objeto_que_lleva == TALK && fl == 131)
- talk(_text[_lang][23], "23.als");
- else if (objeto_que_lleva == LOOK && fl == 132)
- talk(_text[_lang][28], "28.als");
- else if (objeto_que_lleva == PICK && fl == 132)
- talk(_text[_lang][5], "5.als");
- else if (objeto_que_lleva == MOVE && fl == 132)
- talk(_text[_lang][24], "24.als");
- else if (objeto_que_lleva == OPEN && fl == 132)
- talk(_text[_lang][22], "22.als");
- else if (objeto_que_lleva == CLOSE && fl == 132)
- talk(_text[_lang][10], "10.als");
- else if (objeto_que_lleva == TALK && fl == 132)
- talk(_text[_lang][23], "23.als");
- else if (objeto_que_lleva == LOOK && fl == 133)
- talk(_text[_lang][321], "321.als");
- else if (objeto_que_lleva == PICK && fl == 133)
- talk(_text[_lang][31], "31.als");
- else if (objeto_que_lleva == MOVE && fl == 133)
- talk(_text[_lang][34], "34.als");
- else if (objeto_que_lleva == OPEN && fl == 133)
- talk(_text[_lang][30], "30.als");
- else if (objeto_que_lleva == CLOSE && fl == 133)
- talk(_text[_lang][10], "10.als");
- else if (objeto_que_lleva == TALK && fl == 133) {
+ } else if (pickedObject == kVerbTalk && fl == 133) {
talk_sinc(_text[_lang][322], "322.als", "13333334125433333333");
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(25);
- talk(_text[_lang][33], "33.als");
- } else if (objeto_que_lleva == LOOK && fl == 165) {
- talk(_text[_lang][149], "149.als");
- talk(_text[_lang][150], "150.als");
- } else if (objeto_que_lleva == PICK && fl == 165) {
+ talk(33);
+ } else if (pickedObject == kVerbLook && fl == 165) {
+ talk(149);
+ talk(150);
+ } else if (pickedObject == kVerbPick && fl == 165) {
copyBackground(0, 0, 0,0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateRefresh_pre();
copyRect(44, 1, hare_x, hare_y, 41, 70, dir_dibujo2, dir_zona_pantalla);
@@ -267,134 +327,92 @@ void DrasculaEngine::room_3(int fl) {
pickObject(10);
flags[3] = 1;
visible[8] = 0;
- } else if (objeto_que_lleva == LOOK && fl == 166)
- talk(_text[_lang][55], "55.als");
- else if (objeto_que_lleva == PICK && fl == 166)
- talk(_text[_lang][7], "7.als");
- else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 0) {
+ } else if (pickedObject == 14 && fl == 166 && flags[37] == 0) {
animation_7_2();
pickObject(8);
- } else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 1)
- talk(_text[_lang][323], "323.als");
- else if (objeto_que_lleva == LOOK && fl == 211)
- talk(_text[_lang][184], "184.als");
- else if (objeto_que_lleva == TALK && fl == 211) {
- talk(_text[_lang][185], "185.als");
- talk(_text[_lang][186], "186.als");
+ } else if (pickedObject == 14 && fl == 166 && flags[37] == 1)
+ talk(323);
+ else if (pickedObject == kVerbTalk && fl == 211) {
+ talk(185);
+ talk(186);
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_4(int fl) {
- if (objeto_que_lleva == MOVE && fl == 189 && flags[34] == 0) {
- talk(_text[_lang][327], "327.als");
+ if (roomParse(room4Actions, fl))
+ return;
+
+ if (pickedObject == kVerbMove && fl == 189 && flags[34] == 0) {
+ talk(327);
pickObject(13);
flags[34] = 1;
if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1)
flags[38] = 1;
- } else if (objeto_que_lleva == LOOK && fl == 189)
- talk(_text[_lang][182], "182.als");
- else if (objeto_que_lleva == LOOK && fl == 207)
- talk(_text[_lang][175], "175.als");
- else if (objeto_que_lleva == TALK && fl == 207)
- talk(_text[_lang][176], "176.als");
- else if (objeto_que_lleva == LOOK && fl == 208)
- talk(_text[_lang][177], "177.als");
- else if (objeto_que_lleva == LOOK && fl == 209)
- talk(_text[_lang][179], "179.als");
- else if (objeto_que_lleva == LOOK && fl == 210)
- talk(_text[_lang][180], "180.als");
- else if (objeto_que_lleva == OPEN && fl == 210)
- talk(_text[_lang][181], "181.als");
- else
- hay_respuesta = 0;
+ } else
+ hay_answer = 0;
}
void DrasculaEngine::room_5(int fl) {
- if (objeto_que_lleva == LOOK && fl == 136 && flags[8]==0) talk(_text[_lang][14], "14.als");
- else if (objeto_que_lleva == MOVE && fl == 136)
- talk(_text[_lang][13], "13.als");
- else if (objeto_que_lleva == OPEN && fl == 136)
- talk(_text[_lang][18], "18.als");
- else if (objeto_que_lleva == TALK && fl == 136)
- talk(_text[_lang][15], "15.als");
- else if (objeto_que_lleva == 10 && fl == 136) {
+ if (roomParse(room5Actions, fl))
+ return;
+
+ if (pickedObject == kVerbLook && fl == 136 && flags[8] == 0)
+ talk(14);
+ else if (pickedObject == 10 && fl == 136) {
animation_5_2();
resta_objeto(10);
- } else if (objeto_que_lleva == LOOK && fl == 212)
- talk(_text[_lang][187], "187.als");
- else if (objeto_que_lleva == TALK && fl == 212)
- talk(_text[_lang][188], "188.als");
- else if (objeto_que_lleva == LOOK && fl == 213)
- talk(_text[_lang][189], "189.als");
- else if (objeto_que_lleva == OPEN && fl == 213)
- talk(_text[_lang][190], "190.als");
- else
- hay_respuesta = 0;
+ } else
+ hay_answer = 0;
}
void DrasculaEngine::room_6(int fl){
- if (objeto_que_lleva == LOOK && fl==144) {
- talk(_text[_lang][41], "41.als");
- talk(_text[_lang][42], "42.als");
- } else if (objeto_que_lleva == PICK && fl == 144)
- talk(_text[_lang][43], "43.als");
- else if (objeto_que_lleva == LOOK && fl == 138)
- talk(_text[_lang][35], "35.als");
- else if (objeto_que_lleva == OPEN && fl == 138)
+ if (roomParse(room6Actions, fl))
+ return;
+
+ if (pickedObject == kVerbLook && fl==144) {
+ talk(41);
+ talk(42);
+ } else if (pickedObject == kVerbOpen && fl == 138)
openDoor(0, 1);
- else if (objeto_que_lleva == CLOSE && fl == 138)
- cierra_puerta(0, 1);
- else if (objeto_que_lleva == TALK && fl == 138)
- talk(_text[_lang][6], "6.als");
- else if (objeto_que_lleva == LOOK && fl == 143)
- talk(_text[_lang][37], "37.als");
- else if (objeto_que_lleva == PICK && fl == 143)
- talk(_text[_lang][7], "7.als");
- else if (objeto_que_lleva == MOVE && fl == 143)
- talk(_text[_lang][7], "7.als");
- else if (objeto_que_lleva == OPEN && fl == 143 && flags[2] == 0) {
+ else if (pickedObject == kVerbClose && fl == 138)
+ closeDoor(0, 1);
+ else if (pickedObject == kVerbOpen && fl == 143 && flags[2] == 0) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
- updateRefresh_pre();
- copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla);
- updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- pause(10);
- comienza_sound("s3.als");
- flags[2] = 1;
- updateRoom();
- updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
- } else if (objeto_que_lleva == CLOSE && fl == 143 && flags[2] == 1) {
+ updateRefresh_pre();
+ copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla);
+ updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
+ pause(10);
+ playSound("s3.als");
+ flags[2] = 1;
+ updateRoom();
+ updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
+ stopSound();
+ } else if (pickedObject == kVerbClose && fl == 143 && flags[2] == 1) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
flags[2] = 0;
updateRefresh_pre();
copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(5);
- comienza_sound("s4.als");
+ playSound("s4.als");
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
- } else if (objeto_que_lleva == TALK && fl == 143)
- talk(_text[_lang][38], "38.als");
- else if (objeto_que_lleva == LOOK && fl == 139)
- talk(_text[_lang][36], "36.als");
- else if (objeto_que_lleva == OPEN && fl == 139 && flags[1] == 0) {
+ stopSound();
+ } else if (pickedObject == kVerbOpen && fl == 139 && flags[1] == 0) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateRefresh_pre();
copyRect(267, 1, hare_x - 14, hare_y - 2, 52, 73, dir_dibujo3, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(19);
- comienza_sound("s3.als");
+ playSound("s3.als");
flags[1] = 1;
visible[4] = 1;
visible[2] = 0;
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- fin_sound();
- } else if (objeto_que_lleva == LOOK && fl == 140)
- talk(_text[_lang][147], "147.als");
- else if (objeto_que_lleva == PICK && fl == 140) {
+ stopSound();
+ } else if (pickedObject == kVerbPick && fl == 140) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateRefresh_pre();
copyRect(267, 1, hare_x - 14, hare_y - 2, 52, 73, dir_dibujo3, dir_zona_pantalla);
@@ -403,192 +421,181 @@ void DrasculaEngine::room_6(int fl){
pickObject(9);
visible[4] = 0;
flags[10] = 1;
- } else if (objeto_que_lleva == OPEN && fl == 140)
- hay_respuesta = 1;
+ } else if (pickedObject == kVerbOpen && fl == 140)
+ hay_answer = 1;
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_7(int fl){
- if (objeto_que_lleva == LOOK && fl == 169)
- talk(_text[_lang][44], "44.als");
- else if (objeto_que_lleva == LOOK && fl == 164)
- talk(_text[_lang][35], "35.als" );
- else if (objeto_que_lleva == PICK && fl == 190) {
+ if (pickedObject == kVerbLook && fl == 169)
+ talk(44);
+ else if (pickedObject == kVerbLook && fl == 164)
+ talk(35);
+ else if (pickedObject == kVerbPick && fl == 190) {
pickObject(17);
flags[35] = 1;
visible[3] = 0;
if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1)
flags[38] = 1;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_8(int fl) {
- if (objeto_que_lleva == LOOK && fl == 147 && flags[7] == 0) {
- talk(_text[_lang][58], "58.als");
+ if (pickedObject == kVerbLook && fl == 147 && flags[7] == 0) {
+ talk(58);
pickObject(15);
flags[7] = 1;
if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1)
flags[38] = 1;
- } else if (objeto_que_lleva == LOOK && fl == 147)
- talk(_text[_lang][59], "59.als");
+ } else if (pickedObject == kVerbLook && fl == 147)
+ talk(59);
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_9(int fl){
- if (objeto_que_lleva == LOOK && fl == 150)
- talk(_text[_lang][35], "35.als");
- else if (objeto_que_lleva == TALK && fl == 150)
- talk(_text[_lang][6], "6.als");
- else if (objeto_que_lleva == LOOK && fl == 51)
- talk(_text[_lang][60], "60.als");
- else if (objeto_que_lleva == TALK && fl == 51 && flags[4] == 0)
+ if (pickedObject == kVerbLook && fl == 150)
+ talk(35);
+ else if (pickedObject == kVerbTalk && fl == 150)
+ talk(6);
+ else if (pickedObject == kVerbLook && fl == 51)
+ talk(60);
+ else if (pickedObject == kVerbTalk && fl == 51 && flags[4] == 0)
animation_4_2();
- else if (objeto_que_lleva == TALK && fl == 51 && flags[4] == 1)
+ else if (pickedObject == kVerbTalk && fl == 51 && flags[4] == 1)
animation_33_2();
- else if (objeto_que_lleva == 7 && fl == 51) {
+ else if (pickedObject == 7 && fl == 51) {
animation_6_2();
resta_objeto(7);
pickObject(14);}
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_12(int fl){
- if (objeto_que_lleva == LOOK && fl == 154)
- talk(_text[_lang][329], "329.als");
- else if (objeto_que_lleva == TALK && fl == 154)
- talk(_text[_lang][330], "330.als");
- else if (objeto_que_lleva == MOVE && fl == 155)
- talk(_text[_lang][48], "48.als");
- else if (objeto_que_lleva == TALK && fl == 155)
- talk(_text[_lang][331], "331.als");
- else if (objeto_que_lleva == LOOK && fl == 156)
- talk(_text[_lang][35], "35.als");
- else if (objeto_que_lleva == MOVE && fl == 156)
- talk(_text[_lang][48], "48.als");
- else if (objeto_que_lleva == TALK && fl == 156)
- talk(_text[_lang][50], "50.als");
- else if (objeto_que_lleva == OPEN && fl == 156)
+ if (roomParse(room12Actions, fl))
+ return;
+
+ if (pickedObject == kVerbOpen && fl == 156)
openDoor(16, 4);
- else if (objeto_que_lleva == CLOSE && fl == 156)
- cierra_puerta(16, 4);
+ else if (pickedObject == kVerbClose && fl == 156)
+ closeDoor(16, 4);
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
bool DrasculaEngine::room_13(int fl) {
- if (objeto_que_lleva == LOOK && fl == 51) {
- talk(_text[_lang][411], "411.als");
+ if (pickedObject == kVerbLook && fl == 51) {
+ talk(411);
sentido_hare = 3;
- talk(_text[_lang][412], "412.als");
+ talk(412);
strcpy(objName[1], "yoda");
- } else if (objeto_que_lleva == TALK && fl == 51)
+ } else if (pickedObject == kVerbTalk && fl == 51)
conversa("op_7.cal");
- else if (objeto_que_lleva == 19 && fl == 51)
+ else if (pickedObject == 19 && fl == 51)
animation_1_3();
- else if (objeto_que_lleva == 9 && fl == 51) {
+ else if (pickedObject == 9 && fl == 51) {
animation_2_3();
return true;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
return false;
}
void DrasculaEngine::room_14(int fl) {
- if (objeto_que_lleva == TALK && fl == 54 && flags[39] == 0)
+ if (pickedObject == kVerbTalk && fl == 54 && flags[39] == 0)
animation_12_2();
- else if (objeto_que_lleva == TALK && fl == 54 && flags[39] == 1)
- talk(_text[_lang][109], "109.als");
- else if (objeto_que_lleva == 12 && fl == 54)
+ else if (pickedObject == kVerbTalk && fl == 54 && flags[39] == 1)
+ talk(109);
+ else if (pickedObject == 12 && fl == 54)
animation_26_2();
- else if (objeto_que_lleva == TALK && fl == 52 && flags[5] == 0)
+ else if (pickedObject == kVerbTalk && fl == 52 && flags[5] == 0)
animation_11_2();
- else if (objeto_que_lleva == TALK && fl == 52 && flags[5] == 1)
+ else if (pickedObject == kVerbTalk && fl == 52 && flags[5] == 1)
animation_36_2();
- else if (objeto_que_lleva == TALK && fl == 53)
+ else if (pickedObject == kVerbTalk && fl == 53)
animation_13_2();
- else if (objeto_que_lleva == LOOK && fl == 200)
- talk(_text[_lang][165], "165.als");
- else if (objeto_que_lleva == LOOK && fl == 201)
- talk(_text[_lang][166], "166.als");
- else if (objeto_que_lleva == LOOK && fl == 202)
- talk(_text[_lang][167], "167.als");
- else if (objeto_que_lleva == LOOK && fl == 203)
- talk(_text[_lang][168], "168.als");
- else if (objeto_que_lleva == PICK && fl == 203)
- talk(_text[_lang][170], "170.als");
- else if (objeto_que_lleva == MOVE && fl == 203)
- talk(_text[_lang][170], "170.als");
- else if (objeto_que_lleva == TALK && fl == 203)
- talk(_text[_lang][169], "169.als");
- else if (objeto_que_lleva == LOOK && fl == 204)
- talk(_text[_lang][171], "171.als");
+ else if (pickedObject == kVerbLook && fl == 200)
+ talk(165);
+ else if (pickedObject == kVerbLook && fl == 201)
+ talk(166);
+ else if (pickedObject == kVerbLook && fl == 202)
+ talk(167);
+ else if (pickedObject == kVerbLook && fl == 203)
+ talk(168);
+ else if (pickedObject == kVerbPick && fl == 203)
+ talk(170);
+ else if (pickedObject == kVerbMove && fl == 203)
+ talk(170);
+ else if (pickedObject == kVerbTalk && fl == 203)
+ talk(169);
+ else if (pickedObject == kVerbLook && fl == 204)
+ talk(171);
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_15(int fl) {
- if (objeto_que_lleva == TALK && fl == 188)
- talk(_text[_lang][333], "333.als");
- else if (objeto_que_lleva == LOOK && fl == 188)
- talk(_text[_lang][334], "334.als");
- else if (objeto_que_lleva == 19 && fl == 188 && flags[27] == 0)
- talk(_text[_lang][335], "335.als");
- else if (objeto_que_lleva == 19 && fl == 188 && flags[27] == 1) {
- talk(_text[_lang][336], "336.als");
+ if (pickedObject == kVerbTalk && fl == 188)
+ talk(333);
+ else if (pickedObject == kVerbLook && fl == 188)
+ talk(334);
+ else if (pickedObject == 19 && fl == 188 && flags[27] == 0)
+ talk(335);
+ else if (pickedObject == 19 && fl == 188 && flags[27] == 1) {
+ talk(336);
sentido_hare = 3;
- talk(_text[_lang][337], "337.als");
+ talk(337);
talk_sinc(_text[_lang][46], "46.als", "4442444244244");
sentido_hare = 1;
- } else if (objeto_que_lleva == 18 && fl == 188 && flags[26] == 0) {
+ } else if (pickedObject == 18 && fl == 188 && flags[26] == 0) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
copyRect(133, 135, hare_x + 6, hare_y, 39, 63, dir_dibujo3, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- comienza_sound("s8.als");
- fin_sound();
+ playSound("s8.als");
+ stopSound();
talk(_text[_lang][338], "338.als");
flags[27] = 0;
pickObject(19);
resta_objeto(18);
- } else if (objeto_que_lleva == MOVE && fl == 188 && flags[27] == 0) {
+ } else if (pickedObject == kVerbMove && fl == 188 && flags[27] == 0) {
animation_34_2();
- talk(_text[_lang][339], "339.als");
+ talk(339);
pickObject(16);
flags[26] = 1;
flags[27] = 1;
if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1)
flags[38] = 1;
- } else if (objeto_que_lleva == LOOK && fl == 205)
- talk(_text[_lang][172], "172.als");
- else if (objeto_que_lleva == LOOK && fl == 206)
- talk(_text[_lang][173], "173.als");
- else if (objeto_que_lleva == MOVE && fl == 206)
- talk(_text[_lang][174], "174.als");
- else if (objeto_que_lleva == OPEN && fl == 206)
- talk(_text[_lang][174], "174.als");
+ } else if (pickedObject == kVerbLook && fl == 205)
+ talk(172);
+ else if (pickedObject == kVerbLook && fl == 206)
+ talk(173);
+ else if (pickedObject == kVerbMove && fl == 206)
+ talk(174);
+ else if (pickedObject == kVerbOpen && fl == 206)
+ talk(174);
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_16(int fl) {
- if (objeto_que_lleva == TALK && fl == 163)
+ if (pickedObject == kVerbTalk && fl == 163)
talk(_text[_lang][6], "6.als");
- else if (objeto_que_lleva == OPEN && fl == 163)
+ else if (pickedObject == kVerbOpen && fl == 163)
openDoor(17, 0);
- else if (objeto_que_lleva == CLOSE && fl == 163)
- cierra_puerta(17, 0);
- else if (objeto_que_lleva == LOOK && fl == 183)
+ else if (pickedObject == kVerbClose && fl == 163)
+ closeDoor(17, 0);
+ else if (pickedObject == kVerbLook && fl == 183)
talk(_text[_lang][340], "340.als");
- else if (objeto_que_lleva == TALK && fl == 183) {
+ else if (pickedObject == kVerbTalk && fl == 183) {
talk(_text[_lang][341], "341.als");
pause(10);
talk_sinc(_text[_lang][50], "50.als", "11111111111144432554433");
pause(3);
talk_baul(_text[_lang][83], "d83.als");
- } else if (objeto_que_lleva == OPEN && fl == 183) {
+ } else if (pickedObject == kVerbOpen && fl == 183) {
openDoor(19, NO_DOOR);
if (flags[20] == 0) {
flags[20] = 1;
@@ -598,60 +605,60 @@ void DrasculaEngine::room_16(int fl) {
talk(_text[_lang][342], "342.als");
pickObject(22);
}
- } else if (objeto_que_lleva == CLOSE && fl == 183)
- cierra_puerta(19, NO_DOOR);
- else if (objeto_que_lleva == LOOK && fl == 185)
+ } else if (pickedObject == kVerbClose && fl == 183)
+ closeDoor(19, NO_DOOR);
+ else if (pickedObject == kVerbLook && fl == 185)
talk(_text[_lang][37], "37.als");
- else if (objeto_que_lleva == PICK && fl == 185)
+ else if (pickedObject == kVerbPick && fl == 185)
talk(_text[_lang][7], "7.als");
- else if (objeto_que_lleva == MOVE && fl == 185)
+ else if (pickedObject == kVerbMove && fl == 185)
talk(_text[_lang][7], "7.als");
- else if (objeto_que_lleva == TALK && fl == 185)
+ else if (pickedObject == kVerbTalk && fl == 185)
talk(_text[_lang][38], "38.als");
- else if (objeto_que_lleva == LOOK && fl == 187) {
+ else if (pickedObject == kVerbLook && fl == 187) {
talk(_text[_lang][343], "343.als");
sentido_hare = 3;
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
talk(_text[_lang][344], "344.als");
- } else if (objeto_que_lleva == TALK && fl == 187)
+ } else if (pickedObject == kVerbTalk && fl == 187)
talk(_text[_lang][345], "345.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_17(int fl) {
- if (objeto_que_lleva == LOOK && fl == 177)
+ if (pickedObject == kVerbLook && fl == 177)
talk(_text[_lang][35], "35.als");
- else if (objeto_que_lleva == TALK && fl == 177 && flags[18] == 0)
+ else if (pickedObject == kVerbTalk && fl == 177 && flags[18] == 0)
talk(_text[_lang][6], "6.als");
- else if (objeto_que_lleva == TALK && fl == 177 && flags[18] == 1)
+ else if (pickedObject == kVerbTalk && fl == 177 && flags[18] == 1)
animation_18_2();
- else if (objeto_que_lleva == OPEN && fl == 177 && flags[18] == 1)
+ else if (pickedObject == kVerbOpen && fl == 177 && flags[18] == 1)
talk(_text[_lang][346], "346.als");
- else if (objeto_que_lleva == OPEN && fl == 177 && flags[14] == 0 && flags[18] == 0)
+ else if (pickedObject == kVerbOpen && fl == 177 && flags[14] == 0 && flags[18] == 0)
animation_22_2();
- else if (objeto_que_lleva == OPEN && fl == 177 && flags[14] == 1)
+ else if (pickedObject == kVerbOpen && fl == 177 && flags[14] == 1)
openDoor(15, 1);
- else if (objeto_que_lleva == CLOSE && fl == 177 && flags[14] == 1)
- cierra_puerta(15, 1);
- else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0) {
+ else if (pickedObject == kVerbClose && fl == 177 && flags[14] == 1)
+ closeDoor(15, 1);
+ else if (pickedObject == 11 && fl == 50 && flags[22] == 0) {
talk(_text[_lang][347], "347.als");
flags[29] = 1;
pickObject(23);
resta_objeto(11);
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_18(int fl) {
- if (objeto_que_lleva == TALK && fl == 55 && flags[36] == 0)
+ if (pickedObject == kVerbTalk && fl == 55 && flags[36] == 0)
animation_24_2();
- else if (objeto_que_lleva == TALK && fl == 55 && flags[36] == 1)
+ else if (pickedObject == kVerbTalk && fl == 55 && flags[36] == 1)
talk(_text[_lang][109], "109.als");
- else if (objeto_que_lleva == LOOK && fl == 181)
+ else if (pickedObject == kVerbLook && fl == 181)
talk(_text[_lang][348], "348.als");
- else if (objeto_que_lleva == PICK && fl == 182) {
+ else if (pickedObject == kVerbPick && fl == 182) {
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateRefresh_pre();
copyRect(44, 1, hare_x, hare_y, 41, 70, dir_dibujo2, dir_zona_pantalla);
@@ -661,29 +668,29 @@ void DrasculaEngine::room_18(int fl) {
pickObject(12);
visible[2] = 0;
flags[28] = 1;
- } else if (objeto_que_lleva == LOOK && fl == 182)
+ } else if (pickedObject == kVerbLook && fl == 182)
talk(_text[_lang][154], "154.als");
- else if (objeto_que_lleva == 8 && fl == 55 && flags[38] == 0 && flags[33] == 1)
+ else if (pickedObject == 8 && fl == 55 && flags[38] == 0 && flags[33] == 1)
talk(_text[_lang][349], "349.als");
- else if (objeto_que_lleva == 13 && fl == 55 && flags[38] == 0 && flags[33] == 1)
+ else if (pickedObject == 13 && fl == 55 && flags[38] == 0 && flags[33] == 1)
talk(_text[_lang][349], "349.als");
- else if (objeto_que_lleva == 15 && fl == 55 && flags[38] == 0 && flags[33] == 1)
+ else if (pickedObject == 15 && fl == 55 && flags[38] == 0 && flags[33] == 1)
talk(_text[_lang][349], "349.als");
- else if (objeto_que_lleva == 16 && fl == 55 && flags[38] == 0 && flags[33] == 1)
+ else if (pickedObject == 16 && fl == 55 && flags[38] == 0 && flags[33] == 1)
talk(_text[_lang][349], "349.als");
- else if (objeto_que_lleva == 17 && fl == 55 && flags[38] == 0 && flags[33] == 1)
+ else if (pickedObject == 17 && fl == 55 && flags[38] == 0 && flags[33] == 1)
talk(_text[_lang][349], "349.als");
- else if (objeto_que_lleva == 8 && fl == 55 && flags[38] == 1 && flags[33] == 1)
+ else if (pickedObject == 8 && fl == 55 && flags[38] == 1 && flags[33] == 1)
animation_24_2();
- else if (objeto_que_lleva == 13 && fl == 55 && flags[38] == 1 && flags[33] == 1)
+ else if (pickedObject == 13 && fl == 55 && flags[38] == 1 && flags[33] == 1)
animation_24_2();
- else if (objeto_que_lleva == 15 && fl == 55 && flags[38] == 1 && flags[33] == 1)
+ else if (pickedObject == 15 && fl == 55 && flags[38] == 1 && flags[33] == 1)
animation_24_2();
- else if (objeto_que_lleva == 16 && fl == 55 && flags[38] == 1 && flags[33] == 1)
+ else if (pickedObject == 16 && fl == 55 && flags[38] == 1 && flags[33] == 1)
animation_24_2();
- else if (objeto_que_lleva == 17 && fl == 55 && flags[38] == 1 && flags[33] == 1)
+ else if (pickedObject == 17 && fl == 55 && flags[38] == 1 && flags[33] == 1)
animation_24_2();
- else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0) {
+ else if (pickedObject == 11 && fl == 50 && flags[22] == 0) {
sentido_hare = 3;
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
@@ -698,85 +705,85 @@ void DrasculaEngine::room_18(int fl) {
pickObject(23);
resta_objeto(11);
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_19(int fl) {
- if (objeto_que_lleva == LOOK && fl == 214)
+ if (pickedObject == kVerbLook && fl == 214)
talk(_text[_lang][191], "191.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
bool DrasculaEngine::room_21(int fl) {
- if (objeto_que_lleva == OPEN && fl == 101 && flags[28] == 0)
+ if (pickedObject == kVerbOpen && fl == 101 && flags[28] == 0)
talk(_text[_lang][419], "419.als");
- else if (objeto_que_lleva == OPEN && fl == 101 && flags[28] == 1)
+ else if (pickedObject == kVerbOpen && fl == 101 && flags[28] == 1)
openDoor(0, 1);
- else if (objeto_que_lleva == CLOSE && fl == 101)
- cierra_puerta(0, 1);
- else if(objeto_que_lleva == PICK && fl == 141) {
+ else if (pickedObject == kVerbClose && fl == 101)
+ closeDoor(0, 1);
+ else if(pickedObject == kVerbPick && fl == 141) {
pickObject(19);
visible[2] = 0;
flags[10] = 1;
- } else if(objeto_que_lleva == 7 && fl == 101) {
+ } else if(pickedObject == 7 && fl == 101) {
flags[28] = 1;
openDoor(0, 1);
withoutVerb();
- } else if (objeto_que_lleva == 21 && fl == 179) {
+ } else if (pickedObject == 21 && fl == 179) {
animation_9_4();
return true;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
return false;
}
void DrasculaEngine::room_22(int fl) {
- if (objeto_que_lleva == PICK && fl == 140)
+ if (pickedObject == kVerbPick && fl == 140)
talk(_text[_lang][7], "7.als");
- else if (objeto_que_lleva == 11 && fl == 140) {
+ else if (pickedObject == 11 && fl == 140) {
pickObject(18);
visible[1] = 0;
flags[24] = 1;
- } else if (objeto_que_lleva == 22 && fl == 52) {
+ } else if (pickedObject == 22 && fl == 52) {
anima("up.bin",14);
flags[26]=1;
- comienza_sound("s1.als");
+ playSound("s1.als");
hipo(14);
- fin_sound();
+ stopSound();
withoutVerb();
resta_objeto(22);
updateData();
sentido_hare = 3;
talk(_text[_lang][499], "499.als");
talk(_text[_lang][500], "500.als");
- } else if (objeto_que_lleva == LOOK && fl == 52)
+ } else if (pickedObject == kVerbLook && fl == 52)
talk(_text[_lang][497], "497.als");
- else if (objeto_que_lleva == TALK && fl == 52)
+ else if (pickedObject == kVerbTalk && fl == 52)
talk(_text[_lang][498], "498.als");
- else if (objeto_que_lleva == PICK && fl == 180 && flags[26] == 0)
+ else if (pickedObject == kVerbPick && fl == 180 && flags[26] == 0)
talk(_text[_lang][420], "420.als");
- else if (objeto_que_lleva == PICK && fl == 180 && flags[26] == 1) {
+ else if (pickedObject == kVerbPick && fl == 180 && flags[26] == 1) {
pickObject(7);
visible[3] = 0;
flags[27] = 1;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_23(int fl) {
- if (objeto_que_lleva == OPEN && fl == 103) {
+ if (pickedObject == kVerbOpen && fl == 103) {
openDoor(0, 0);
updateData();
- } else if(objeto_que_lleva == CLOSE && fl == 103) {
- cierra_puerta(0, 0);
+ } else if(pickedObject == kVerbClose && fl == 103) {
+ closeDoor(0, 0);
updateData();
- } else if(objeto_que_lleva == OPEN && fl == 104)
+ } else if(pickedObject == kVerbOpen && fl == 104)
openDoor(1, 1);
- else if(objeto_que_lleva == CLOSE && fl == 104)
- cierra_puerta(1, 1);
- else if(objeto_que_lleva == PICK && fl == 142) {
+ else if(pickedObject == kVerbClose && fl == 104)
+ closeDoor(1, 1);
+ else if(pickedObject == kVerbPick && fl == 142) {
pickObject(8);
visible[2] = 0;
flags[11] = 1;
@@ -785,129 +792,129 @@ void DrasculaEngine::room_23(int fl) {
if (flags[18] == 1)
animation_6_4();
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_24(int fl) {
- if (objeto_que_lleva == OPEN && fl == 105)
+ if (pickedObject == kVerbOpen && fl == 105)
openDoor(1, 0);
- else if (objeto_que_lleva == CLOSE && fl == 105)
- cierra_puerta(1, 0);
- else if (objeto_que_lleva == OPEN && fl == 106)
+ else if (pickedObject == kVerbClose && fl == 105)
+ closeDoor(1, 0);
+ else if (pickedObject == kVerbOpen && fl == 106)
openDoor(2, 1);
- else if (objeto_que_lleva == CLOSE && fl == 106)
- cierra_puerta(2, 1);
- else if (objeto_que_lleva == LOOK && fl == 151)
+ else if (pickedObject == kVerbClose && fl == 106)
+ closeDoor(2, 1);
+ else if (pickedObject == kVerbLook && fl == 151)
talk(_text[_lang][461], "461.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_26(int fl) {
- if (objeto_que_lleva == OPEN && fl == 107 && flags[30] == 0)
+ if (pickedObject == kVerbOpen && fl == 107 && flags[30] == 0)
openDoor(2, 0);
- else if (objeto_que_lleva == OPEN && fl == 107 && flags[30] == 1)
+ else if (pickedObject == kVerbOpen && fl == 107 && flags[30] == 1)
talk(_text[_lang][421], "421.als");
- else if (objeto_que_lleva == CLOSE && fl == 107)
- cierra_puerta(2, 0);
- else if (objeto_que_lleva == 10 && fl == 50 && flags[18] == 1 && flags[12] == 1)
+ else if (pickedObject == kVerbClose && fl == 107)
+ closeDoor(2, 0);
+ else if (pickedObject == 10 && fl == 50 && flags[18] == 1 && flags[12] == 1)
animation_5_4();
- else if (objeto_que_lleva == 8 && fl == 50 && flags[18] == 1 && flags[12] == 1)
+ else if (pickedObject == 8 && fl == 50 && flags[18] == 1 && flags[12] == 1)
animation_5_4();
- else if (objeto_que_lleva == 12 && fl == 50 && flags[18] == 1 && flags[12] == 1)
+ else if (pickedObject == 12 && fl == 50 && flags[18] == 1 && flags[12] == 1)
animation_5_4();
- else if (objeto_que_lleva == 16 && fl == 50 && flags[18] == 1 && flags[12] == 1)
+ else if (pickedObject == 16 && fl == 50 && flags[18] == 1 && flags[12] == 1)
animation_5_4();
- else if (objeto_que_lleva == PICK && fl == 143 && flags[18] == 1) {
+ else if (pickedObject == kVerbPick && fl == 143 && flags[18] == 1) {
lleva_al_hare(260, 180);
pickObject(10);
visible[1] = 0;
flags[12] = 1;
- cierra_puerta(2, 0);
+ closeDoor(2, 0);
sentido_hare = 2;
talk_igorpuerta(_texti[_lang][27], "I27.als");
flags[30] = 1;
talk_igorpuerta(_texti[_lang][28], "I28.als");
lleva_al_hare(153, 180);
- } else if (objeto_que_lleva == PICK && fl == 143 && flags[18] == 0) {
+ } else if (pickedObject == kVerbPick && fl == 143 && flags[18] == 0) {
lleva_al_hare(260, 180);
copyBackground(80, 78, 199, 94, 38, 27, dir_dibujo3, dir_zona_pantalla);
updateScreen(199, 94, 199, 94, 38, 27, dir_zona_pantalla);
pause(3);
talk_igor_peluca(_texti[_lang][25], "I25.als");
lleva_al_hare(153, 180);
- } else if (objeto_que_lleva == TALK && fl == 51)
+ } else if (pickedObject == kVerbTalk && fl == 51)
animation_1_4();
- else if (objeto_que_lleva == OPEN && fl == 167)
+ else if (pickedObject == kVerbOpen && fl == 167)
talk(_text[_lang][467], "467.als");
- else if (objeto_que_lleva == LOOK && fl == 164)
+ else if (pickedObject == kVerbLook && fl == 164)
talk(_text[_lang][470], "470.als");
- else if (objeto_que_lleva == OPEN && fl == 164)
+ else if (pickedObject == kVerbOpen && fl == 164)
talk(_text[_lang][471], "471.als");
- else if (objeto_que_lleva == LOOK && fl == 163)
+ else if (pickedObject == kVerbLook && fl == 163)
talk(_text[_lang][472], "472.als");
- else if (objeto_que_lleva == PICK && fl == 163)
+ else if (pickedObject == kVerbPick && fl == 163)
talk(_text[_lang][473], "473.als");
- else if (objeto_que_lleva == LOOK && fl == 165)
+ else if (pickedObject == kVerbLook && fl == 165)
talk(_text[_lang][474], "474.als");
- else if (objeto_que_lleva == LOOK && fl == 168)
+ else if (pickedObject == kVerbLook && fl == 168)
talk(_text[_lang][476], "476.als");
- else if (objeto_que_lleva == PICK && fl == 168)
+ else if (pickedObject == kVerbPick && fl == 168)
talk(_text[_lang][477], "477.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_27(int fl) {
- if (objeto_que_lleva == OPEN && fl == 110)
+ if (pickedObject == kVerbOpen && fl == 110)
openDoor(6, 1);
- else if (objeto_que_lleva == CLOSE && fl == 110)
- cierra_puerta(6, 1);
- else if (objeto_que_lleva == OPEN && fl == 116 && flags[23] == 0)
+ else if (pickedObject == kVerbClose && fl == 110)
+ closeDoor(6, 1);
+ else if (pickedObject == kVerbOpen && fl == 116 && flags[23] == 0)
talk(_text[_lang][419], "419.als");
- else if (objeto_que_lleva == OPEN && fl == 116 && flags[23] == 1)
+ else if (pickedObject == kVerbOpen && fl == 116 && flags[23] == 1)
openDoor(5, 3);
- else if (objeto_que_lleva == 17 && fl == 116) {
+ else if (pickedObject == 17 && fl == 116) {
flags[23] = 1;
openDoor(5,3);
withoutVerb();
- } else if (objeto_que_lleva == LOOK && fl == 175)
+ } else if (pickedObject == kVerbLook && fl == 175)
talk(_text[_lang][429], "429.als");
else if (fl == 150)
talk(_text[_lang][460], "460.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_29(int fl) {
- if (objeto_que_lleva == OPEN && fl == 114)
+ if (pickedObject == kVerbOpen && fl == 114)
openDoor(4, 1);
- else if (objeto_que_lleva == CLOSE && fl == 114)
- cierra_puerta(4, 1);
- else if (objeto_que_lleva == LOOK && fl == 152)
+ else if (pickedObject == kVerbClose && fl == 114)
+ closeDoor(4, 1);
+ else if (pickedObject == kVerbLook && fl == 152)
talk(_text[_lang][463], "463.als");
- else if (objeto_que_lleva == OPEN && fl == 152)
+ else if (pickedObject == kVerbOpen && fl == 152)
talk(_text[_lang][464], "464.als");
- else if (objeto_que_lleva == LOOK && fl == 153)
+ else if (pickedObject == kVerbLook && fl == 153)
talk(_text[_lang][465], "465.als");
- else if (objeto_que_lleva == PICK && fl == 154)
+ else if (pickedObject == kVerbPick && fl == 154)
talk(_text[_lang][466], "466.als");
- else if (objeto_que_lleva == OPEN && fl == 156)
+ else if (pickedObject == kVerbOpen && fl == 156)
talk(_text[_lang][467], "467.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_30(int fl) {
- if (objeto_que_lleva == OPEN && fl == 115)
+ if (pickedObject == kVerbOpen && fl == 115)
openDoor(4, 0);
- else if (objeto_que_lleva == CLOSE && fl == 115)
- cierra_puerta(4, 0);
- else if (objeto_que_lleva == OPEN && fl == 144 && flags[19] == 0)
+ else if (pickedObject == kVerbClose && fl == 115)
+ closeDoor(4, 0);
+ else if (pickedObject == kVerbOpen && fl == 144 && flags[19] == 0)
talk(_text[_lang][422], "422.als");
- else if (objeto_que_lleva == OPEN && fl == 144 && flags[19] == 1 && flags[22] == 1)
+ else if (pickedObject == kVerbOpen && fl == 144 && flags[19] == 1 && flags[22] == 1)
openDoor(16, 1);
- else if (objeto_que_lleva == OPEN && fl == 144 && flags[19] == 1 && flags[22] == 0) {
+ else if (pickedObject == kVerbOpen && fl == 144 && flags[19] == 1 && flags[22] == 0) {
openDoor(16, 1);
talk(_text[_lang][423], "423.als");
flags[22] = 1;
@@ -916,59 +923,59 @@ void DrasculaEngine::room_30(int fl) {
flags[18] = 1;
if (flags[18] == 1)
animation_6_4();
- } else if (objeto_que_lleva == CLOSE && fl == 144)
- cierra_puerta(16, 1);
- else if (objeto_que_lleva == 13 && fl == 144) {
+ } else if (pickedObject == kVerbClose && fl == 144)
+ closeDoor(16, 1);
+ else if (pickedObject == 13 && fl == 144) {
talk(_text[_lang][424], "424.als");
flags[19] = 1;
- } else if (objeto_que_lleva == OPEN && fl == 157)
+ } else if (pickedObject == kVerbOpen && fl == 157)
talk(_text[_lang][468], "468.als");
- else if (objeto_que_lleva == LOOK && fl == 158)
+ else if (pickedObject == kVerbLook && fl == 158)
talk(_text[_lang][469], "469.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_31(int fl) {
- if (objeto_que_lleva == PICK && fl == 145) {
+ if (pickedObject == kVerbPick && fl == 145) {
pickObject(11);
visible[1] = 0;
flags[13] = 1;
- } else if (objeto_que_lleva == OPEN && fl == 117)
+ } else if (pickedObject == kVerbOpen && fl == 117)
openDoor(5, 0);
- else if (objeto_que_lleva == CLOSE && fl == 117)
- cierra_puerta(5, 0);
- else if (objeto_que_lleva == LOOK && fl == 161)
+ else if (pickedObject == kVerbClose && fl == 117)
+ closeDoor(5, 0);
+ else if (pickedObject == kVerbLook && fl == 161)
talk(_text[_lang][470], "470.als");
- else if (objeto_que_lleva == OPEN && fl == 161)
+ else if (pickedObject == kVerbOpen && fl == 161)
talk(_text[_lang][471], "471.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_34(int fl) {
- if (objeto_que_lleva == MOVE && fl == 146)
+ if (pickedObject == kVerbMove && fl == 146)
animation_8_4();
- else if (objeto_que_lleva == LOOK && fl == 146)
+ else if (pickedObject == kVerbLook && fl == 146)
talk(_text[_lang][458], "458.als");
- else if (objeto_que_lleva == PICK && fl == 146)
+ else if (pickedObject == kVerbPick && fl == 146)
talk(_text[_lang][459], "459.als");
- else if (objeto_que_lleva == OPEN && fl == 120 && flags[25] == 1)
+ else if (pickedObject == kVerbOpen && fl == 120 && flags[25] == 1)
openDoor(8, 2);
- else if (objeto_que_lleva == OPEN && fl == 120 && flags[25] == 0) {
+ else if (pickedObject == kVerbOpen && fl == 120 && flags[25] == 0) {
openDoor(8, 2);
sentido_hare = 3;
talk(_text[_lang][425], "425.als");
pickObject(14);
flags[25] = 1;
- } else if (objeto_que_lleva == CLOSE && fl == 120)
- cierra_puerta(8, 2);
+ } else if (pickedObject == kVerbClose && fl == 120)
+ closeDoor(8, 2);
else
- hay_respuesta=0;
+ hay_answer=0;
}
void DrasculaEngine::room_35(int fl) {
- if (objeto_que_lleva == PICK && fl == 148) {
+ if (pickedObject == kVerbPick && fl == 148) {
pickObject(16);
visible[2] = 0;
flags[14] = 1;
@@ -976,85 +983,85 @@ void DrasculaEngine::room_35(int fl) {
flags[18] = 1;
if (flags[18] == 1)
animation_6_4();
- } else if (objeto_que_lleva == PICK && fl == 147) {
+ } else if (pickedObject == kVerbPick && fl == 147) {
talk(_text[_lang][426], "426.als");
pickObject(15);
visible[1] = 0;
flags[15] = 1;
flags[17] = 1;
updateData();
- } else if (objeto_que_lleva == PICK && fl == 149) {
+ } else if (pickedObject == kVerbPick && fl == 149) {
pickObject(13);
visible[3] = 0;
flags[17] = 0;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_44(int fl) {
- if (objeto_que_lleva == LOOK && fl == 172)
+ if (pickedObject == kVerbLook && fl == 172)
talk(_text[_lang][428], "428.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_49(int fl){
- if (objeto_que_lleva == TALK && fl ==51)
+ if (pickedObject == kVerbTalk && fl ==51)
conversa("op_9.cal");
- else if (objeto_que_lleva == LOOK && fl == 51)
+ else if (pickedObject == kVerbLook && fl == 51)
talk(_text[_lang][132], "132.als");
- else if ((objeto_que_lleva == 8 && fl == 51) || (objeto_que_lleva == 8 && fl == 203))
+ else if ((pickedObject == 8 && fl == 51) || (pickedObject == 8 && fl == 203))
animation_5_5();
- else if (objeto_que_lleva == LOOK && fl == 200)
+ else if (pickedObject == kVerbLook && fl == 200)
talk(_text[_lang][133], "133.als");
- else if (objeto_que_lleva == TALK && fl == 200)
+ else if (pickedObject == kVerbTalk && fl == 200)
talk(_text[_lang][134], "134.als");
- else if (objeto_que_lleva == LOOK && fl == 201)
+ else if (pickedObject == kVerbLook && fl == 201)
talk(_text[_lang][135], "135.als");
- else if (objeto_que_lleva == LOOK && fl == 203)
+ else if (pickedObject == kVerbLook && fl == 203)
talk(_text[_lang][137], "137.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_53(int fl) {
- if (objeto_que_lleva == PICK && fl == 120) {
+ if (pickedObject == kVerbPick && fl == 120) {
pickObject(16);
visible[3] = 0;
- } else if (objeto_que_lleva == LOOK && fl == 121)
+ } else if (pickedObject == kVerbLook && fl == 121)
talk(_text[_lang][128], "128.als");
- else if (objeto_que_lleva == LOOK && fl == 209)
+ else if (pickedObject == kVerbLook && fl == 209)
talk(_text[_lang][129], "129.als");
- else if (objeto_que_lleva == MOVE && fl == 123)
+ else if (pickedObject == kVerbMove && fl == 123)
animation_11_5();
- else if (objeto_que_lleva == LOOK && fl == 52)
+ else if (pickedObject == kVerbLook && fl == 52)
talk(_text[_lang][447], "447.als");
- else if (objeto_que_lleva == TALK && fl == 52)
+ else if (pickedObject == kVerbTalk && fl == 52)
talk(_text[_lang][131], "131.als");
- else if (objeto_que_lleva == 12 && fl == 52)
+ else if (pickedObject == 12 && fl == 52)
animation_10_5();
- else if (objeto_que_lleva == 15 && fl == 52)
+ else if (pickedObject == 15 && fl == 52)
animation_9_5();
- else if (objeto_que_lleva == 16 && fl == 121) {
+ else if (pickedObject == 16 && fl == 121) {
flags[2] = 1;
withoutVerb();
updateData();
- } else if (objeto_que_lleva == 16) {
+ } else if (pickedObject == 16) {
talk(_text[_lang][439], "439.als");
withoutVerb();
visible[3] = 1;
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_54(int fl) {
- if ((objeto_que_lleva == TALK && fl == 118) || (objeto_que_lleva == LOOK && fl == 118 && flags[0] == 0))
+ if ((pickedObject == kVerbTalk && fl == 118) || (pickedObject == kVerbLook && fl == 118 && flags[0] == 0))
animation_1_5();
- else if (objeto_que_lleva == LOOK && fl == 118 && flags[0]==1)
+ else if (pickedObject == kVerbLook && fl == 118 && flags[0]==1)
talk(_text[_lang][124], "124.als");
- else if (objeto_que_lleva == LOOK && fl == 53)
+ else if (pickedObject == kVerbLook && fl == 53)
talk(_text[_lang][127], "127.als");
- else if (objeto_que_lleva == TALK && fl == 53 && flags[14] == 0) {
+ else if (pickedObject == kVerbTalk && fl == 53 && flags[14] == 0) {
talk(_text[_lang][288], "288.als");
flags[12] = 1;
pause(10);
@@ -1065,96 +1072,96 @@ void DrasculaEngine::room_54(int fl) {
conversa("op_10.cal");
flags[12] = 0;
flags[14] = 1;
- } else if (objeto_que_lleva == TALK && fl == 53 && flags[14] == 1)
+ } else if (pickedObject == kVerbTalk && fl == 53 && flags[14] == 1)
talk(_text[_lang][109], "109.als");
- else if (objeto_que_lleva == PICK && fl == 9999 && flags[13] == 0) {
+ else if (pickedObject == kVerbPick && fl == 9999 && flags[13] == 0) {
pickObject(8);
flags[13] = 1;
talk_mus(_texte[_lang][10], "e10.als");
updateData();
- } else if (objeto_que_lleva == OPEN && fl == 119)
+ } else if (pickedObject == kVerbOpen && fl == 119)
talk(_text[_lang][125], "125.als");
- else if (objeto_que_lleva == LOOK && fl == 119)
+ else if (pickedObject == kVerbLook && fl == 119)
talk(_text[_lang][126], "126.als");
- else if (objeto_que_lleva == 10 && fl == 119) {
+ else if (pickedObject == 10 && fl == 119) {
pause(4);
talk(_text[_lang][436], "436.als");
withoutVerb();
resta_objeto(10);
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_55(int fl) {
- if (objeto_que_lleva == PICK && fl == 122) {
+ if (pickedObject == kVerbPick && fl == 122) {
pickObject(12);
flags[8] = 1;
updateData();
- } else if (objeto_que_lleva == LOOK && fl == 122)
+ } else if (pickedObject == kVerbLook && fl == 122)
talk(_text[_lang][138], "138.als");
- else if (objeto_que_lleva == LOOK && fl == 204)
+ else if (pickedObject == kVerbLook && fl == 204)
talk(_text[_lang][139], "139.als");
- else if (objeto_que_lleva == LOOK && fl == 205)
+ else if (pickedObject == kVerbLook && fl == 205)
talk(_text[_lang][140], "140.als");
else if (fl == 206) {
- comienza_sound("s11.als");
+ playSound("s11.als");
anima("det.bin", 17);
- fin_sound();
+ stopSound();
lleva_al_hare(hare_x - 3, hare_y + alto_hare + 6);
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
bool DrasculaEngine::room_56(int fl) {
- if (objeto_que_lleva == OPEN && fl == 124) {
+ if (pickedObject == kVerbOpen && fl == 124) {
animation_14_5();
return true;
- } else if (objeto_que_lleva == LOOK && fl == 124)
+ } else if (pickedObject == kVerbLook && fl == 124)
talk(_text[_lang][450], "450.als");
- else if (objeto_que_lleva == OPEN && fl == 207)
+ else if (pickedObject == kVerbOpen && fl == 207)
talk(_text[_lang][141], "141.als");
- else if (objeto_que_lleva == LOOK && fl == 208)
+ else if (pickedObject == kVerbLook && fl == 208)
talk(_text[_lang][142], "142.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
return false;
}
void DrasculaEngine::room_58(int fl) {
- if (objeto_que_lleva == MOVE && fl == 103)
+ if (pickedObject == kVerbMove && fl == 103)
animation_7_6();
- else if (objeto_que_lleva == LOOK && fl == 104)
+ else if (pickedObject == kVerbLook && fl == 104)
talk(_text[_lang][454], "454.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_59(int fl) {
- if ((objeto_que_lleva == TALK && fl == 51) || (objeto_que_lleva == LOOK && fl == 51)) {
+ if ((pickedObject == kVerbTalk && fl == 51) || (pickedObject == kVerbLook && fl == 51)) {
flags[9] = 1;
- talk(_text[_lang][259], "259.als");
- talk_bj_cama(_textbj[_lang][13], "bj13.als");
- talk(_text[_lang][263], "263.als");
- talk_bj_cama(_textbj[_lang][14], "bj14.als");
+ talk(259);
+ talk_bj_cama(13);
+ talk(263);
+ talk_bj_cama(14);
pause(40);
- talk(_text[_lang][264], "264.als");
- talk_bj_cama(_textbj[_lang][15], "BJ15.als");
- talk(_text[_lang][265], "265.als");
+ talk(264);
+ talk_bj_cama(15);
+ talk(265);
flags[9] = 0;
if (flags[11] == 0) {
- comienza_sound("s12.als");
+ playSound("s12.als");
delay(40);
- fin_sound();
+ stopSound();
delay(10);
lleva_al_hare(174, 168);
sentido_hare = 2;
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
pause(40);
- comienza_sound("s12.als");
+ playSound("s12.als");
pause(19);
- fin_sound_corte();
+ stopSound_corte();
hare_se_ve = 0;
updateRoom();
copyRect(101, 34, hare_x - 4, hare_y - 1, 37, 70, dir_dibujo3, dir_zona_pantalla);
@@ -1201,244 +1208,244 @@ void DrasculaEngine::room_59(int fl) {
flags[11] = 1;
}
} else
- hay_respuesta = 0;
+ hay_answer = 0;
}
bool DrasculaEngine::room_60(int fl) {
- if (objeto_que_lleva == MOVE && fl == 112)
+ if (pickedObject == kVerbMove && fl == 112)
animation_10_6();
- else if (objeto_que_lleva == LOOK && fl == 112)
+ else if (pickedObject == kVerbLook && fl == 112)
talk(_text[_lang][440], "440.als");
- else if (objeto_que_lleva == TALK && fl == 52) {
+ else if (pickedObject == kVerbTalk && fl == 52) {
talk(_text[_lang][266], "266.als");
talk_taber2(_textt[_lang][1], "t1.als");
conversa("op_12.cal");
withoutVerb();
- objeto_que_lleva = 0;
- } else if (objeto_que_lleva == TALK && fl == 115)
+ pickedObject = 0;
+ } else if (pickedObject == kVerbTalk && fl == 115)
talk(_text[_lang][455], "455.als");
- else if (objeto_que_lleva == TALK && fl == 56)
+ else if (pickedObject == kVerbTalk && fl == 56)
talk(_text[_lang][455], "455.als");
- else if (objeto_que_lleva == LOOK && fl == 114)
+ else if (pickedObject == kVerbLook && fl == 114)
talk(_text[_lang][167], "167.als");
- else if (objeto_que_lleva == LOOK && fl == 113)
+ else if (pickedObject == kVerbLook && fl == 113)
talk(_text[_lang][168], "168.als");
- else if (objeto_que_lleva == PICK && fl == 113)
+ else if (pickedObject == kVerbPick && fl == 113)
talk(_text[_lang][170], "170.als");
- else if (objeto_que_lleva == MOVE && fl == 113)
+ else if (pickedObject == kVerbMove && fl == 113)
talk(_text[_lang][170], "170.als");
- else if (objeto_que_lleva == TALK && fl == 113)
+ else if (pickedObject == kVerbTalk && fl == 113)
talk(_text[_lang][169], "169.als");
- else if (objeto_que_lleva == 21 && fl == 56)
+ else if (pickedObject == 21 && fl == 56)
animation_18_6();
- else if (objeto_que_lleva == 9 && fl == 56 && flags[6] == 1) {
+ else if (pickedObject == 9 && fl == 56 && flags[6] == 1) {
animation_9_6();
return true;
- } else if (objeto_que_lleva == 9 && fl == 56 && flags[6] == 0) {
+ } else if (pickedObject == 9 && fl == 56 && flags[6] == 0) {
anima("cnf.bin", 14);
talk(_text[_lang][455], "455.als");
} else
- hay_respuesta = 0;
+ hay_answer = 0;
return false;
}
void DrasculaEngine::room_61(int fl) {
- if (objeto_que_lleva == LOOK && fl == 116)
+ if (pickedObject == kVerbLook && fl == 116)
talk(_text[_lang][172], "172.als");
- else if (objeto_que_lleva == LOOK && fl == 117)
+ else if (pickedObject == kVerbLook && fl == 117)
talk(_text[_lang][173], "173.als");
- else if (objeto_que_lleva == MOVE && fl == 117)
+ else if (pickedObject == kVerbMove && fl == 117)
talk(_text[_lang][174], "174.als");
- else if (objeto_que_lleva == OPEN && fl == 117)
+ else if (pickedObject == kVerbOpen && fl == 117)
talk(_text[_lang][174], "174.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_62(int fl) {
- if (objeto_que_lleva == TALK && fl == 53)
+ if (pickedObject == kVerbTalk && fl == 53)
conversa("op_13.cal");
- else if (objeto_que_lleva == TALK && fl == 52 && flags[0] == 0)
+ else if (pickedObject == kVerbTalk && fl == 52 && flags[0] == 0)
animation_3_1();
- else if (objeto_que_lleva == TALK && fl == 52 && flags[0] == 1)
+ else if (pickedObject == kVerbTalk && fl == 52 && flags[0] == 1)
talk(_text[_lang][109], "109.als");
- else if (objeto_que_lleva == TALK && fl == 54)
+ else if (pickedObject == kVerbTalk && fl == 54)
animation_4_1();
- else if (objeto_que_lleva == LOOK && fl == 100)
+ else if (pickedObject == kVerbLook && fl == 100)
talk(_text[_lang][168], "168.als");
- else if (objeto_que_lleva == TALK && fl == 100)
+ else if (pickedObject == kVerbTalk && fl == 100)
talk(_text[_lang][169], "169.als");
- else if (objeto_que_lleva == PICK && fl == 100)
+ else if (pickedObject == kVerbPick && fl == 100)
talk(_text[_lang][170], "170.als");
- else if (objeto_que_lleva == LOOK && fl == 101)
+ else if (pickedObject == kVerbLook && fl == 101)
talk(_text[_lang][171], "171.als");
- else if (objeto_que_lleva == LOOK && fl == 102)
+ else if (pickedObject == kVerbLook && fl == 102)
talk(_text[_lang][167], "167.als");
- else if (objeto_que_lleva == LOOK && fl == 103)
+ else if (pickedObject == kVerbLook && fl == 103)
talk(_text[_lang][166], "166.als");
- else hay_respuesta = 0;
+ else hay_answer = 0;
}
void DrasculaEngine::room_63(int fl) {
- if (objeto_que_lleva == LOOK && fl == 110)
+ if (pickedObject == kVerbLook && fl == 110)
talk(_text[_lang][172], "172.als");
- else if (objeto_que_lleva == LOOK && fl == 109)
+ else if (pickedObject == kVerbLook && fl == 109)
talk(_text[_lang][173], "173.als");
- else if (objeto_que_lleva == MOVE && fl == 109)
+ else if (pickedObject == kVerbMove && fl == 109)
talk(_text[_lang][174], "174.als");
- else if (objeto_que_lleva == LOOK && fl == 108)
+ else if (pickedObject == kVerbLook && fl == 108)
talk(_text[_lang][334], "334.als");
- else if (objeto_que_lleva == TALK && fl == 108)
+ else if (pickedObject == kVerbTalk && fl == 108)
talk(_text[_lang][333], "333.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::room_pendulo(int fl) {
- if (objeto_que_lleva == LOOK && fl == 100)
+ if (pickedObject == kVerbLook && fl == 100)
talk(_text[_lang][452], "452.als");
- else if (objeto_que_lleva == LOOK && fl == 101)
+ else if (pickedObject == kVerbLook && fl == 101)
talk (_text[_lang][123], "123.als");
- else if (objeto_que_lleva == PICK && fl == 101)
+ else if (pickedObject == kVerbPick && fl == 101)
pickObject(20);
- else if (objeto_que_lleva == 20 && fl == 100)
+ else if (pickedObject == 20 && fl == 100)
animation_6_6();
- else if (objeto_que_lleva == PICK || objeto_que_lleva == OPEN)
+ else if (pickedObject == kVerbPick || pickedObject == kVerbOpen)
talk(_text[_lang][453], "453.als");
else
- hay_respuesta = 0;
+ hay_answer = 0;
}
void DrasculaEngine::updateRefresh() {
if (num_ejec == 1) {
- if (!strcmp(num_room, "63.alg"))
+ if (roomNumber == 63)
update_63();
- else if (!strcmp(num_room, "62.alg"))
+ else if (roomNumber == 62)
update_62();
} else if (num_ejec == 2) {
- if (!strcmp(num_room, "3.alg"))
+ if (roomNumber == 3)
update_3();
- else if (!strcmp(num_room, "2.alg"))
+ else if (roomNumber == 2)
update_2();
- else if (!strcmp(num_room, "4.alg"))
+ else if (roomNumber == 4)
update_4();
- else if (!strcmp(num_room, "5.alg"))
+ else if (roomNumber == 5)
update_5();
- else if (!strcmp(num_room, "15.alg"))
+ else if (roomNumber == 15)
update_15();
- else if (!strcmp(num_room, "17.alg"))
+ else if (roomNumber == 17)
update_17();
- else if (!strcmp(num_room, "18.alg"))
+ else if (roomNumber == 18)
update_18();
- else if (!strcmp(num_room, "10.alg"))
+ else if (roomNumber == 10)
mapa();
} else if (num_ejec == 3) {
- if (!strcmp(num_room, "20.alg"))
+ if (roomNumber == 20)
update_20();
- else if (!strcmp(num_room, "13.alg"))
+ else if (roomNumber == 13)
update_13();
} else if (num_ejec == 4) {
- if (!strcmp(num_room, "29.alg"))
+ if (roomNumber == 29)
update_29();
- else if (!strcmp(num_room, "26.alg"))
+ else if (roomNumber == 26)
update_26();
- else if (!strcmp(num_room, "27.alg"))
+ else if (roomNumber == 27)
update_27();
- else if (!strcmp(num_room, "31.alg"))
+ else if (roomNumber == 31)
update_31();
- else if (!strcmp(num_room, "34.alg"))
+ else if (roomNumber == 34)
update_34();
- else if (!strcmp(num_room, "35.alg"))
+ else if (roomNumber == 35)
update_35();
} else if (num_ejec == 5) {
- if (!strcmp(num_room, "45.alg"))
+ if (roomNumber == 45)
mapa();
- else if (!strcmp(num_room, "50.alg"))
+ else if (roomNumber == 50)
update_50();
- else if (!strcmp(num_room, "57.alg"))
+ else if (roomNumber == 57)
update_57();
} else if (num_ejec == 6) {
- if (!strcmp(num_room, "60.alg"))
+ if (roomNumber == 60)
update_60();
- else if (!strcmp(num_room, "61.alg"))
+ else if (roomNumber == 61)
update_61();
- else if (!strcmp(num_room, "58.alg"))
+ else if (roomNumber == 58)
update_58();
}
}
void DrasculaEngine::updateRefresh_pre() {
if (num_ejec == 1) {
- if (!strcmp(num_room, "62.alg"))
+ if (roomNumber == 62)
update_62_pre();
- else if (!strcmp(num_room, "16.alg"))
+ else if (roomNumber == 16)
pon_bj();
} else if (num_ejec == 2) {
- if (!strcmp(num_room, "1.alg"))
+ if (roomNumber == 1)
update_1_pre();
- else if (!strcmp(num_room, "3.alg"))
+ else if (roomNumber == 3)
update_3_pre();
- else if (!strcmp(num_room, "5.alg"))
+ else if (roomNumber == 5)
update_5_pre();
- else if (!strcmp(num_room, "6.alg"))
+ else if (roomNumber == 6)
update_6_pre();
- else if (!strcmp(num_room, "7.alg"))
+ else if (roomNumber == 7)
update_7_pre();
- else if (!strcmp(num_room, "9.alg"))
+ else if (roomNumber == 9)
update_9_pre();
- else if (!strcmp(num_room, "12.alg"))
+ else if (roomNumber == 12)
update_12_pre();
- else if (!strcmp(num_room, "14.alg"))
+ else if (roomNumber == 14)
update_14_pre();
- else if (!strcmp(num_room, "16.alg"))
+ else if (roomNumber == 16)
update_16_pre();
- else if (!strcmp(num_room, "17.alg"))
+ else if (roomNumber == 17)
update_17_pre();
- else if (!strcmp(num_room, "18.alg"))
+ else if (roomNumber == 18)
update_18_pre();
} else if (num_ejec == 3) {
// nothing
} else if (num_ejec == 4) {
- if (!strcmp(num_room, "21.alg"))
+ if (roomNumber == 21)
update_21_pre();
- else if (!strcmp(num_room, "22.alg"))
+ else if (roomNumber == 22)
update_22_pre();
- else if (!strcmp(num_room, "23.alg"))
+ else if (roomNumber == 23)
update_23_pre();
- else if (!strcmp(num_room, "24.alg"))
+ else if (roomNumber == 24)
update_24_pre();
- else if (!strcmp(num_room, "26.alg"))
+ else if (roomNumber == 26)
update_26_pre();
- else if (!strcmp(num_room, "27.alg"))
+ else if (roomNumber == 27)
update_27_pre();
- else if (!strcmp(num_room, "29.alg"))
+ else if (roomNumber == 29)
update_29_pre();
- else if (!strcmp(num_room, "30.alg"))
+ else if (roomNumber == 30)
update_30_pre();
- else if (!strcmp(num_room, "31.alg"))
+ else if (roomNumber == 31)
update_31_pre();
- else if (!strcmp(num_room, "34.alg"))
+ else if (roomNumber == 34)
update_34_pre();
- else if (!strcmp(num_room, "35.alg"))
+ else if (roomNumber == 35)
update_35_pre();
} else if (num_ejec == 5) {
- if (!strcmp(num_room,"49.alg"))
+ if (roomNumber == 49)
update_49_pre();
- else if (!strcmp(num_room,"53.alg"))
+ else if (roomNumber == 53)
update_53_pre();
- else if (!strcmp(num_room,"54.alg"))
+ else if (roomNumber == 54)
update_54_pre();
- else if (!strcmp(num_room,"56.alg"))
+ else if (roomNumber == 56)
update_56_pre();
} else if (num_ejec == 6) {
- if (!strcmp(num_room, "102.alg"))
+ if (roomNumber == 102)
update_pendulo();
- else if (!strcmp(num_room, "58.alg"))
+ else if (roomNumber == 58)
update_58_pre();
- else if (!strcmp(num_room, "59.alg"))
+ else if (roomNumber == 59)
update_59_pre();
- else if (!strcmp(num_room, "60.alg"))
+ else if (roomNumber == 60)
update_60_pre();
}
}
diff --git a/engines/drascula/talk.cpp b/engines/drascula/talk.cpp
index 62f44c31d3..d6f393aa2a 100644
--- a/engines/drascula/talk.cpp
+++ b/engines/drascula/talk.cpp
@@ -27,22 +27,7 @@
namespace Drascula {
-void DrasculaEngine::talk_igor_dch(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
- int x_talk[8] = { 56, 82, 108, 134, 160, 186, 212, 238 };
- int cara;
-
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
-
- color_abc(WHITE);
-
+void DrasculaEngine::talkInit(const char *filename) {
if (hay_sb == 1) {
sku = new Common::File;
sku->open(filename);
@@ -53,6 +38,18 @@ void DrasculaEngine::talk_igor_dch(const char *said, const char *filename) {
ctvd_speaker(1);
ctvd_output(sku);
}
+}
+
+void DrasculaEngine::talk_igor_dch(const char *said, const char *filename) {
+ int x_talk[8] = { 56, 82, 108, 134, 160, 186, 212, 238 };
+ int cara;
+ int length = strlen(said);
+
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
+
+ color_abc(WHITE);
+
+ talkInit(filename);
bucless:
@@ -89,8 +86,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
@@ -100,31 +97,15 @@ bucless:
}
void DrasculaEngine::talk_dr_izq(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[8] = { 1, 40, 79, 118, 157, 196, 235, 274 };
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(RED);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -166,8 +147,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -178,31 +159,15 @@ bucless:
}
void DrasculaEngine::talk_dr_dch(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[8] = { 1, 40, 79, 118, 157, 196, 235, 274 };
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(RED);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -243,8 +208,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -259,31 +224,16 @@ bucless:
}
void DrasculaEngine::talk_solo(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
if (num_ejec == 1)
color_abc(color_solo);
else if (num_ejec == 4)
color_abc(RED);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
if (num_ejec == 6)
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
@@ -312,8 +262,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
if (num_ejec == 6) {
@@ -323,31 +273,15 @@ bucless:
}
void DrasculaEngine::talk_igor_frente(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[8] = { 56, 86, 116, 146, 176, 206, 236, 266 };
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -386,8 +320,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -404,31 +338,15 @@ bucless:
}
void DrasculaEngine::talk_tabernero(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[9] = { 1, 23, 45, 67, 89, 111, 133, 155, 177 };
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(MAROON);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -466,8 +384,8 @@ bucless:
delete(sku);
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -475,32 +393,22 @@ bucless:
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
-void DrasculaEngine::talk_bj(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+void DrasculaEngine::talk_bj(int index) {
+ char name[20];
+ sprintf(name, "BJ%i.als", index);
+ talk_bj(_textbj[_lang][index], name);
+}
+void DrasculaEngine::talk_bj(const char *said, const char *filename) {
int x_talk[5] = { 64, 92, 120, 148, 176 };
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
if (num_ejec != 5) {
@@ -545,8 +453,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -554,10 +462,13 @@ bucless:
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
-void DrasculaEngine::talk(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+void DrasculaEngine::talk(int index) {
+ char name[20];
+ sprintf(name, "%i.als", index);
+ talk(_text[_lang][index], name);
+}
+void DrasculaEngine::talk(const char *said, const char *filename) {
int suma_1_pixel = 0;
if (num_ejec != 2)
suma_1_pixel = 1;
@@ -566,24 +477,20 @@ void DrasculaEngine::talk(const char *said, const char *filename) {
int x_talk_dch[6] = { 1, 25, 49, 73, 97, 121 };
int x_talk_izq[6] = { 145, 169, 193, 217, 241, 265 };
int cara;
-
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
if (num_ejec == 6) {
- if (flags[0] == 0 && (!strcmp(num_room, "102.alg"))) {
+ if (flags[0] == 0 && roomNumber == 102) {
talk_pen(said, filename);
return;
}
- if (flags[0] == 0 && (!strcmp(num_room, "58.alg"))) {
+ if (flags[0] == 0 && roomNumber == 58) {
talk_pen2(said, filename);
return;
}
}
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
if (num_ejec != 2) {
if (factor_red[hare_y + alto_hare] == 100)
@@ -591,22 +498,14 @@ void DrasculaEngine::talk(const char *said, const char *filename) {
}
if (num_ejec == 4) {
- if (strcmp(num_room, "24.alg") || flags[29] == 0) {
+ if (roomNumber == 24 || flags[29] == 0) {
color_abc(YELLOW);
}
} else {
color_abc(YELLOW);
}
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+
+ talkInit(filename);
bucless:
@@ -692,8 +591,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -707,29 +606,15 @@ bucless:
}
void DrasculaEngine::talk_pianista(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
int x_talk[4] = { 97, 145, 193, 241 };
int cara;
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -761,8 +646,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -771,17 +656,11 @@ bucless:
}
void DrasculaEngine::talk_borracho(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[8] = { 1, 21, 41, 61, 81, 101, 121, 141 };
int cara;
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
if (num_ejec == 1) {
loadPic("an11y13.alg");
@@ -800,16 +679,7 @@ bebiendo:
color_abc(DARK_GREEN);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz\n");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -840,8 +710,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -863,32 +733,22 @@ bucless:
}
}
-void DrasculaEngine::talk_vb(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+void DrasculaEngine::talk_vb(int index) {
+ char name[20];
+ sprintf(name, "VB%i.als", index);
+ talk_vb(_textvb[_lang][index], name);
+}
+void DrasculaEngine::talk_vb(const char *said, const char *filename) {
int x_talk[6] = {1, 27, 53, 79, 105, 131};
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(VON_BRAUN);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
copyBackground(vb_x + 5, 64, OBJWIDTH + 1, 0, 25, 27, dir_dibujo1, dir_dibujo3);
@@ -923,8 +783,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -934,29 +794,20 @@ bucless:
playMusic(roomMusic);
}
-void DrasculaEngine::talk_vbpuerta(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+void DrasculaEngine::talk_vbpuerta(int index) {
+ char name[20];
+ sprintf(name, "VB%i.als", index);
+ talk_vb(_textvb[_lang][index], name);
+}
- int longitud;
- longitud = strlen(said);
+void DrasculaEngine::talk_vbpuerta(const char *said, const char *filename) {
+ int length = strlen(said);
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(VON_BRAUN);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -975,8 +826,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -990,26 +841,14 @@ void DrasculaEngine::talk_ciego(const char *said, const char *filename, const ch
byte *num_cara;
int p = 0;
int pos_ciego[6];
- int cara = 0;
-
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
color_abc(VON_BRAUN);
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
pos_ciego[1] = 2;
pos_ciego[2] = 73;
@@ -1021,39 +860,23 @@ bucless:
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
pos_ciego[5] = 149;
char c = toupper(sincronia[p]);
- if (c == '0')
- cara = 0;
- if (c == '1')
- cara = 1;
- if (c == '2')
- cara = 2;
- if (c == '3')
- cara = 3;
- if (c == '4')
- cara = 4;
- if (c == '5')
- cara = 5;
- if (c == '6')
- cara = 6;
- if (c == '7')
- cara = 7;
- if (cara == 0 || cara == 2 || cara == 4 || cara == 6)
+ if (c == '0' || c == '2' || c == '4' || c == '6')
pos_ciego[0] = 1;
else
pos_ciego[0] = 132;
- if (cara == 0)
+ if (c == '0')
num_cara = dir_dibujo3;
- else if (cara == 1)
+ else if (c == '1')
num_cara = dir_dibujo3;
- else if (cara == 2)
+ else if (c == '2')
num_cara = dir_hare_dch;
- else if (cara == 3)
+ else if (c == '3')
num_cara = dir_hare_dch;
- else if (cara == 4)
+ else if (c == '4')
num_cara = dir_hare_fondo;
- else if (cara == 5)
+ else if (c == '5')
num_cara = dir_hare_fondo;
else {
num_cara = dir_hare_frente;
@@ -1079,38 +902,23 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
}
void DrasculaEngine::talk_hacker(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
color_abc(YELLOW);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
if (withVoices == 0)
@@ -1127,8 +935,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1136,31 +944,15 @@ bucless:
}
void DrasculaEngine::talk_lobo(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[9] = {52, 79, 106, 133, 160, 187, 214, 241, 268};
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(RED);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1191,8 +983,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1201,31 +993,15 @@ bucless:
}
void DrasculaEngine::talk_mus(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[8] = { 16, 35, 54, 73, 92, 111, 130, 149};
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1256,8 +1032,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1266,14 +1042,9 @@ bucless:
}
void DrasculaEngine::talk_pen(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[8] = {112, 138, 164, 190, 216, 242, 268, 294};
int cara;
-
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
flags[1] = 1;
@@ -1281,22 +1052,11 @@ void DrasculaEngine::talk_pen(const char *said, const char *filename) {
copyRect(44, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla);
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(YELLOW);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1327,8 +1087,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1339,33 +1099,17 @@ bucless:
}
void DrasculaEngine::talk_pen2(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[5]={122, 148, 174, 200, 226};
int cara;
-
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
flags[1] = 1;
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(YELLOW);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1396,8 +1140,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1408,31 +1152,15 @@ bucless:
}
void DrasculaEngine::talk_taber2(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[6] = {1, 23, 45, 67, 89, 111};
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(MAROON);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1463,8 +1191,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1472,32 +1200,22 @@ bucless:
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
}
-void DrasculaEngine::talk_bj_cama(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+void DrasculaEngine::talk_bj_cama(int index) {
+ char name[20];
+ sprintf(name, "BJ%i.als", index);
+ talk_bj_cama(_textbj[_lang][index], name);
+}
+void DrasculaEngine::talk_bj_cama(const char *said, const char *filename) {
int x_talk[5] = {51, 101, 151, 201, 251};
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1529,8 +1247,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
updateRoom();
@@ -1538,32 +1256,16 @@ bucless:
}
void DrasculaEngine::talk_htel(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
char *num_cara;
-
int x_talk[3] = {1, 94, 187};
int cara, pantalla;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(YELLOW);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1597,8 +1299,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1612,9 +1314,7 @@ void DrasculaEngine::talk_sinc(const char *said, const char *filename, const cha
int x_talk_dch[6] = {1, 25, 49, 73, 97, 121};
int x_talk_izq[6] = {145, 169, 193, 217, 241, 265};
int p, cara = 0;
-
- int longitud;
- longitud = strlen(said);
+ int length = strlen(said);
color_abc(YELLOW);
@@ -1625,16 +1325,7 @@ void DrasculaEngine::talk_sinc(const char *said, const char *filename, const cha
p = 0;
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1721,8 +1412,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1733,31 +1424,16 @@ bucless:
}
void DrasculaEngine::talk_baul(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
int cara = 0, cara_antes;
- int longitud;
+ int length = strlen(said);
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
cara_antes = flags[19];
color_abc(MAROON);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1786,8 +1462,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1797,28 +1473,13 @@ bucless:
}
void DrasculaEngine::talk_igorpuerta(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1){
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1837,8 +1498,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1847,31 +1508,15 @@ bucless:
}
void DrasculaEngine::talk_igor_sentado(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[4] = { 80, 102, 124, 146 };
int cara;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1) {
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1902,8 +1547,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
@@ -1912,31 +1557,15 @@ bucless:
}
void DrasculaEngine::talk_igor_peluca(const char *said, const char *filename) {
- int tiempou;
- long tiempol;
-
int x_talk[4] = {119, 158, 197, 236};
int cara = 0;
+ int length = strlen(said);
- int longitud;
- longitud = strlen(said);
-
- tiempol = _system->getMillis();
- tiempou = (unsigned int)tiempol / 2;
- _rnd->setSeed(tiempou);
+ _rnd->setSeed((unsigned int)_system->getMillis() / 2);
color_abc(WHITE);
- if (hay_sb == 1){
- sku = new Common::File;
- sku->open(filename);
- if (!sku->isOpen()) {
- error("no puedo abrir archivo de voz");
- }
- ctvd_init(2);
- ctvd_speaker(1);
- ctvd_output(sku);
- }
+ talkInit(filename);
bucless:
@@ -1967,8 +1596,8 @@ bucless:
sku = NULL;
ctvd_terminate();
} else {
- longitud = longitud - 2;
- if (longitud > 0)
+ length -= 2;
+ if (length > 0)
goto bucless;
}
diff --git a/engines/drascula/texts.cpp b/engines/drascula/texts.cpp
index 6389097c1d..c84f176d35 100644
--- a/engines/drascula/texts.cpp
+++ b/engines/drascula/texts.cpp
@@ -4677,7 +4677,7 @@ const char *_textt[][25] = {
"QU'EST-CE QU'IL Y A, QU'Y A-T-IL?",
"D'ACCORD. CHAMBRE 512. PAR LES ESCALIERS. LA CL EST SUR LA PORTE",
"LE COMTE DRASCULA?!",
- "NON, RIEN, CE TYPE A UNE MAUVAISE RPUTATION PAR ICI",
+ "NON, RIEN, CE TYPE A UNE MAUVAISE R\220PUTATION PAR ICI",
// 5
"EH BIEN, IL Y A DES RUMEURS QUI COURENT SUR LUI. CERTAINS DISENT QUE C'EST UN VAMPIRE ET QU'IL ENLEVE DU MONDE POUR SUCER LEUR SANG ",
"MAIS D'AUTRES PENSENT QU'IL EST SEULEMENT UN TRAFICANT D'ORGANES, ET C'EST POUR CELA QUE DES PERSONNES DPECES SONT APPARUES DANS LES ALENTOURS",
@@ -5308,20 +5308,20 @@ const char *_textverbs[][6] = {
"mover",
},
{
- "look", // TODO Translate it
- "take",
- "open",
- "close",
- "talk",
- "push",
+ "Schau",
+ "Nimm",
+ "oeFFNE",
+ "Schliesse",
+ "Rede",
+ "Druecke",
},
{
- "look", // TODO Translate it
- "take",
- "open",
- "close",
- "talk",
- "push",
+ "regardez",
+ "ramassez",
+ "ouvrez",
+ "fermez",
+ "parlez",
+ "poussez",
},
{
"esamina",
@@ -5334,21 +5334,26 @@ const char *_textverbs[][6] = {
};
-const char *_textmisc[][1] = {
+const char *_textmisc[][2] = {
{
"HUNCHBACKED",
+ "Transilvania, 1993 d.c.",
},
{
"jorobado",
+ "Transilvania, 1993 d.c. (despues de cenar)",
},
{
"HUNCHBACKED",
+ "Transilvania, 1993 d.c.",
},
{
"HUNCHBACKED",
+ "Transilvania, 1993 d.c.",
},
{
"HUNCHBACKED",
+ "Transilvania, 1993 d.c.",
},
};