[Scummvm-cvs-logs] SF.net SVN: scummvm: [32315] scummvm/trunk/engines/drascula
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Tue May 27 09:45:13 CEST 2008
Revision: 32315
http://scummvm.svn.sourceforge.net/scummvm/?rev=32315&view=rev
Author: thebluegr
Date: 2008-05-27 00:45:13 -0700 (Tue, 27 May 2008)
Log Message:
-----------
Changed roomParse to accept an array directly and rewrote some more room logic
Modified Paths:
--------------
scummvm/trunk/engines/drascula/drascula.h
scummvm/trunk/engines/drascula/rooms.cpp
Modified: scummvm/trunk/engines/drascula/drascula.h
===================================================================
--- scummvm/trunk/engines/drascula/drascula.h 2008-05-27 07:17:15 UTC (rev 32314)
+++ scummvm/trunk/engines/drascula/drascula.h 2008-05-27 07:45:13 UTC (rev 32315)
@@ -59,6 +59,7 @@
#define TEXTD_START 68
struct DrasculaGameDescription;
+struct RoomTalkAction;
#define NUM_SAVES 10
#define NUM_FLAGS 50
@@ -616,7 +617,7 @@
void aumenta_num_frame();
int sobre_que_objeto();
bool comprueba_banderas_menu();
- bool roomParse(int, int);
+ bool roomParse(RoomTalkAction*, int);
void room_0();
void room_1(int);
void room_2(int);
Modified: scummvm/trunk/engines/drascula/rooms.cpp
===================================================================
--- scummvm/trunk/engines/drascula/rooms.cpp 2008-05-27 07:17:15 UTC (rev 32314)
+++ scummvm/trunk/engines/drascula/rooms.cpp 2008-05-27 07:45:13 UTC (rev 32315)
@@ -81,29 +81,87 @@
};
RoomTalkAction room1Actions[] = {
+ // num action object speech
{ -1, PICK, 118, 5 },
{ -1, OPEN, 118, 3 },
{ -1, CLOSE, 118, 4 },
{ -1, TALK, 118, 6 },
+ // -------------------------------
{ -1, LOOK, 119, 8 },
{ -1, MOVE, 119, 13 },
{ -1, CLOSE, 119, 10 },
{ -1, TALK, 119, 12 },
+ // -------------------------------
{ -1, MOVE, 120, 13 },
{ -1, OPEN, 120, 18 },
{ -1, TALK, 120, 15 }
};
-bool DrasculaEngine::roomParse(int roomNo, int fl) {
- // TODO: find a better way to assign room actions
- RoomTalkAction *roomActions = 0;
- bool didAction = false;
+RoomTalkAction room3Actions[] = {
+ // num action object speech
+ { -1, LOOK, 129, 21 },
+ { -1, PICK, 129, 5 },
+ { -1, MOVE, 129, 24 },
+ { -1, OPEN, 129, 22 },
+ { -1, CLOSE, 129, 10 },
+ // -------------------------------
+ { -1, LOOK, 131, 27 },
+ { -1, PICK, 131, 5 },
+ { -1, MOVE, 131, 24 },
+ { -1, OPEN, 131, 22 },
+ { -1, CLOSE, 131, 10 },
+ { -1, TALK, 131, 23 },
+ // -------------------------------
+ { -1, LOOK, 132, 28 },
+ { -1, PICK, 132, 5 },
+ { -1, MOVE, 132, 24 },
+ { -1, OPEN, 132, 22 },
+ { -1, CLOSE, 132, 10 },
+ { -1, TALK, 132, 23 },
+ // -------------------------------
+ { -1, LOOK, 133, 321 },
+ { -1, PICK, 133, 31 },
+ { -1, MOVE, 133, 34 },
+ { -1, OPEN, 133, 30 },
+ { -1, CLOSE, 133, 10 },
+ // -------------------------------
+ { -1, LOOK, 166, 55 },
+ { -1, PICK, 166, 7 },
+ // -------------------------------
+ { -1, LOOK, 211, 184 }
+};
- if (roomNo == 0)
- roomActions = room0Actions;
- else if (roomNo == 1)
- roomActions = room1Actions;
+RoomTalkAction room4Actions[] = {
+ // num action object speech
+ { -1, LOOK, 189, 182 },
+ // -------------------------------
+ { -1, LOOK, 207, 175 },
+ { -1, TALK, 207, 176 },
+ // -------------------------------
+ { -1, LOOK, 208, 177 },
+ // -------------------------------
+ { -1, LOOK, 209, 179 },
+ // -------------------------------
+ { -1, LOOK, 210, 180 },
+ { -1, OPEN, 210, 181 }
+};
+RoomTalkAction room12Actions[] = {
+ // num action object speech
+ { -1, LOOK, 154, 329 },
+ { -1, TALK, 154, 330 },
+ // -------------------------------
+ { -1, MOVE, 155, 48 },
+ { -1, TALK, 155, 331 },
+ // -------------------------------
+ { -1, LOOK, 156, 35 },
+ { -1, MOVE, 156, 48 },
+ { -1, TALK, 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) {
@@ -123,7 +181,7 @@
}
void DrasculaEngine::room_0() {
- if (roomParse(0, -1))
+ if (roomParse(room0Actions, -1))
return;
// non-default actions
@@ -199,7 +257,7 @@
}
void DrasculaEngine::room_1(int fl) {
- if (roomParse(1, fl))
+ if (roomParse(room1Actions, fl))
return;
if (objeto_que_lleva == LOOK && fl == 118) {
@@ -213,55 +271,14 @@
}
void DrasculaEngine::room_3(int fl) {
- if (objeto_que_lleva == LOOK && fl == 129)
- talk(21);
- else if (objeto_que_lleva == PICK && fl == 129)
- talk(5);
- else if (objeto_que_lleva == MOVE && fl == 129)
- talk(24);
- else if (objeto_que_lleva == OPEN && fl == 129)
- talk(22);
- else if (objeto_que_lleva == CLOSE && fl == 129)
- talk(10);
- else if (objeto_que_lleva == TALK && fl == 129) {
+ if (roomParse(room3Actions, fl))
+ return;
+
+ if (objeto_que_lleva == TALK && fl == 129) {
talk(23);
pause(6);
talk_sinc(_text[_lang][50], "50.als", "11111111111144432554433");
- } else if (objeto_que_lleva == LOOK && fl == 131)
- talk(27);
- else if (objeto_que_lleva == PICK && fl == 131)
- talk(5);
- else if (objeto_que_lleva == MOVE && fl == 131)
- talk(24);
- else if (objeto_que_lleva == OPEN && fl == 131)
- talk(22);
- else if (objeto_que_lleva == CLOSE && fl == 131)
- talk(10);
- else if (objeto_que_lleva == TALK && fl == 131)
- talk(23);
- else if (objeto_que_lleva == LOOK && fl == 132)
- talk(28);
- else if (objeto_que_lleva == PICK && fl == 132)
- talk(5);
- else if (objeto_que_lleva == MOVE && fl == 132)
- talk(24);
- else if (objeto_que_lleva == OPEN && fl == 132)
- talk(22);
- else if (objeto_que_lleva == CLOSE && fl == 132)
- talk(10);
- else if (objeto_que_lleva == TALK && fl == 132)
- talk(23);
- else if (objeto_que_lleva == LOOK && fl == 133)
- talk(321);
- else if (objeto_que_lleva == PICK && fl == 133)
- talk(31);
- else if (objeto_que_lleva == MOVE && fl == 133)
- talk(34);
- else if (objeto_que_lleva == OPEN && fl == 133)
- talk(30);
- else if (objeto_que_lleva == CLOSE && fl == 133)
- talk(10);
- else if (objeto_que_lleva == TALK && fl == 133) {
+ } else if (objeto_que_lleva == TALK && fl == 133) {
talk_sinc(_text[_lang][322], "322.als", "13333334125433333333");
updateRoom();
updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla);
@@ -280,17 +297,11 @@
pickObject(10);
flags[3] = 1;
visible[8] = 0;
- } else if (objeto_que_lleva == LOOK && fl == 166)
- talk(55);
- else if (objeto_que_lleva == PICK && fl == 166)
- talk(7);
- else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 0) {
+ } else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 0) {
animation_7_2();
pickObject(8);
} else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 1)
talk(323);
- else if (objeto_que_lleva == LOOK && fl == 211)
- talk(184);
else if (objeto_que_lleva == TALK && fl == 211) {
talk(185);
talk(186);
@@ -299,27 +310,16 @@
}
void DrasculaEngine::room_4(int fl) {
+ if (roomParse(room4Actions, fl))
+ return;
+
if (objeto_que_lleva == MOVE && 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(182);
- else if (objeto_que_lleva == LOOK && fl == 207)
- talk(175);
- else if (objeto_que_lleva == TALK && fl == 207)
- talk(176);
- else if (objeto_que_lleva == LOOK && fl == 208)
- talk(177);
- else if (objeto_que_lleva == LOOK && fl == 209)
- talk(179);
- else if (objeto_que_lleva == LOOK && fl == 210)
- talk(180);
- else if (objeto_que_lleva == OPEN && fl == 210)
- talk(181);
- else
+ } else
hay_respuesta = 0;
}
@@ -470,21 +470,10 @@
}
void DrasculaEngine::room_12(int fl){
- if (objeto_que_lleva == LOOK && fl == 154)
- talk(329);
- else if (objeto_que_lleva == TALK && fl == 154)
- talk(330);
- else if (objeto_que_lleva == MOVE && fl == 155)
- talk(48);
- else if (objeto_que_lleva == TALK && fl == 155)
- talk(331);
- else if (objeto_que_lleva == LOOK && fl == 156)
- talk(35);
- else if (objeto_que_lleva == MOVE && fl == 156)
- talk(48);
- else if (objeto_que_lleva == TALK && fl == 156)
- talk(50);
- else if (objeto_que_lleva == OPEN && fl == 156)
+ if (roomParse(room12Actions, fl))
+ return;
+
+ if (objeto_que_lleva == OPEN && fl == 156)
openDoor(16, 4);
else if (objeto_que_lleva == CLOSE && fl == 156)
closeDoor(16, 4);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list