aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2017-10-18 19:02:16 +0200
committerThierry Crozat2018-01-23 02:15:35 +0000
commit4d7d8023333cf64d77810f097fd4b72392bda5a7 (patch)
treecf33c4f256afb9e1caf8993bc426345d1404fddb
parent49e3dd5864b59fdd966de382a74d4ed1044d0d21 (diff)
downloadscummvm-rg350-4d7d8023333cf64d77810f097fd4b72392bda5a7.tar.gz
scummvm-rg350-4d7d8023333cf64d77810f097fd4b72392bda5a7.tar.bz2
scummvm-rg350-4d7d8023333cf64d77810f097fd4b72392bda5a7.zip
SUPERNOVA: Change the signature of dialog(), fix calls, extract some more strings
-rw-r--r--devtools/create_supernova/gametext.h60
-rw-r--r--engines/supernova/msn_def.h9
-rw-r--r--engines/supernova/rooms.cpp69
-rw-r--r--engines/supernova/rooms.h72
-rw-r--r--engines/supernova/state.cpp2
-rw-r--r--engines/supernova/state.h2
6 files changed, 129 insertions, 85 deletions
diff --git a/devtools/create_supernova/gametext.h b/devtools/create_supernova/gametext.h
index b4e94a1f98..10e1507916 100644
--- a/devtools/create_supernova/gametext.h
+++ b/devtools/create_supernova/gametext.h
@@ -569,97 +569,121 @@ const char *gameText[] = {
"Ja? Komisch.", // kStringArsanoRoger13
"Jetzt wei\341 ich's. Sie sind Roger W. !", // kStringArsanoRoger14
"Pssst, nicht so laut, sonst will|gleich jeder ein Autogramm von mir.", // kStringArsanoRoger15
- // 415
+ // 445
"Ich habe extra eine Maske auf, damit|ich nicht von jedem angelabert werde.", // kStringArsanoRoger16
"\216h ... ach so.", // kStringArsanoRoger17
"Wann kommt denn das n\204chste SQ-Abenteuer raus?", // kStringArsanoRoger18
"SQ 127 m\201\341te in einem Monat erscheinen.", // kStringArsanoRoger19
"Was, Teil 127 ??", // kStringArsanoRoger20
- // 420
+ // 450
"Bei uns ist gerade Teil 8 erschienen.", // kStringArsanoRoger21
"Hmm ... von welchem Planeten sind Sie denn?", // kStringArsanoRoger22
"Von der Erde.", // kStringArsanoRoger23
"Erde? Nie geh\224rt.", // kStringArsanoRoger24
"Wahrscheinlich irgendein Kaff, wo Neuerungen|erst hundert Jahre sp\204ter hingelangen.", // kStringArsanoRoger25
- // 425
+ // 455
"\216h ... kann sein.", // kStringArsanoRoger26
"Aber eins m\201ssen Sie mir erkl\204ren!", // kStringArsanoRoger27
"Wieso sehen Sie mir so verdammt \204hnlich, wenn|Sie nicht von Xenon stammen, wie ich?", // kStringArsanoRoger28
"Keine Ahnung. Bis jetzt dachte ich immer, Sie w\201ren ein|von Programmierern auf der Erde erfundenes Computersprite.", // kStringArsanoRoger29
"Was? Lachhaft!", // kStringArsanoRoger30
- // 430
+ // 460
"Wie erkl\204ren Sie sich dann,|da\341 ich ihnen gegen\201bersitze?", // kStringArsanoRoger31
"Ja, das ist in der Tat seltsam.", // kStringArsanoRoger32
"Halt, jetzt wei\341 ich es. Sie sind von der Konkurrenz,|von \"Georgefilm Games\" und wollen mich verunsichern.", // kStringArsanoRoger33
"Nein, ich bin nur ein Ahnungsloser Koch von der Erde.", // kStringArsanoRoger34
"Na gut, ich glaube Ihnen. Lassen wir jetzt|dieses Thema, langsam wird es mir zu bunt!", // kStringArsanoRoger35
- // 435
+ // 465
"Eine Partie Schach! Das ist eine gute Idee.", // kStringArsanoRoger36
"Schach? Was ist das denn?", // kStringArsanoRoger37
"Schach ist ein interessantes Spiel.|Ich werde es Ihnen erkl\204ren.", // kStringArsanoRoger38
"Knapp zwei Stunden sp\204ter ...", // kStringArsanoRoger39
"Roger W. steht kurz vor dem Schachmatt|und gr\201belt nach einem Ausweg.", // kStringArsanoRoger40
- // 440
+ // 470
"Du tippst auf den Tasten herum,|aber es passiert nichts.", // kStringArsanoGlider1
"Alle Raumschiffe haben|den Planeten verlassen.", // kStringArsanoMeetup2_1
"Alle Raumschiffe haben den Planeten|verlassen, bis auf eins ...", // kStringArsanoMeetup2_2
"Was wollen Sie denn schon wieder?", // kStringArsanoMeetup2_3
"Nein.", // kStringArsanoMeetup2_4
- // 445
+ // 475
"Haben Sie zuf\204llig meine Brieftasche gesehen?|Ich mu\341 Sie irgendwo verloren haben.", // kStringArsanoMeetup2_5
"Ohne die Brieftasche kann ich nicht|starten, weil meine Keycard darin ist.", // kStringArsanoMeetup2_6
"Oh! Vielen Dank.", // kStringArsanoMeetup2_7
"Wo ist denn Ihr Raumschiff?|Soll ich Sie ein St\201ck mitnehmen?", // kStringArsanoMeetup2_8
"Wo wollen Sie denn hin?", // kStringArsanoMeetup2_9
- // 450
+ // 480
"Ok, steigen Sie ein!", // kStringArsanoMeetup2_10
"Wie Sie wollen.", // kStringArsanoMeetup2_11
"Huch, du lebst ja noch!", // kStringArsanoMeetup2_12
"Das w\201rde ich jetzt nicht tun, schlie\341lich|steht Roger W. neben seinem Schiff.", // kStringArsanoMeetup2_13
"Ich glaube, er wacht auf.", // kStringArsanoMeetup3_1
- // 455
+ // 485
"Ja, sieht so aus.", // kStringArsanoMeetup3_2
"Sie befinden sich im Raumschiff \"Dexxa\".", // kStringArsanoMeetup3_3
"Wir kommen vom Planeten Axacuss und|sind aus dem gleichen Grund hier wie Sie,|n?mlich zur Erforschung der Supernova.", // kStringArsanoMeetup3_4
"Sie k\224nnen beruhigt sein, wir wollen Ihnen nur helfen.", // kStringArsanoMeetup3_5
"Und wieso hat der Typ im Raumanzug|eben auf mich geschossen?", // kStringArsanoMeetup3_6
- // 460
+ // 490
"Das war eine Schreckreaktion.", // kStringArsanoMeetup3_7
"Schlie\341lich ist es f\201r uns das erste Mal,|da\341 wir auf eine fremde Intelligenz treffen.", // kStringArsanoMeetup3_8
"Wie wir festgestellt haben, ist|Ihr Raumschiff v\224llig zerst\224rt.", // kStringArsanoMeetup3_9
"Wahrscheinlich k\224nnen Sie nicht|mehr auf ihren Heimatplaneten zur\201ck.", // kStringArsanoMeetup3_10
"Wir bieten Ihnen an, Sie|mit nach Axacuss zu nehmen.", // kStringArsanoMeetup3_11
- // 465
+ // 495
"Sind Sie sich da wirklich sicher?", // kStringArsanoMeetup3_12
"Wenn ich es mir genau \201berlege,|fliege ich doch lieber mit.", // kStringArsanoMeetup3_13
"Gut, wir nehmen Sie unter der|Bedingung mit, da\341 wir Sie jetzt|sofort in Tiefschlaf versetzen d\201rfen.", // kStringArsanoMeetup3_14
"Diese Art des Reisens ist Ihnen|ja scheinbar nicht unbekannt.", // kStringArsanoMeetup3_15
"Sie werden in vier Jahren nach der|Landung der \"Dexxa\" wieder aufgeweckt.", // kStringArsanoMeetup3_16
- // 470
+ // 500
"Sind Sie damit einverstanden?", // kStringArsanoMeetup3_17
"Gut, haben Sie noch irgendwelche Fragen?", // kStringArsanoMeetup3_18
"Keine Panik!", // kStringArsanoMeetup3_19
"Wir tun Ihnen nichts.", // kStringArsanoMeetup3_20
"Wir sprechen nicht ihre Sprache,|sondern Sie sprechen unsere.", // kStringArsanoMeetup3_21
- // 475
+ // 505
"Nach einer Gehirnanalyse konnten|wir Ihr Gehirn an unsere Sprache anpassen.", // kStringArsanoMeetup3_22
"Was? Sie haben in mein Gehirn eingegriffen?", // kStringArsanoMeetup3_23
"Keine Angst, wir haben sonst nichts ver\204ndert.", // kStringArsanoMeetup3_24
"Ohne diesen Eingriff w\204ren|Sie verloren gewesen.", // kStringArsanoMeetup3_25
"Ich habe keine weiteren Fragen mehr.", // kStringArsanoMeetup3_26
- // 480
+ // 510
"Gut, dann versetzen wir Sie jetzt in Tiefschlaf.", // kStringArsanoMeetup3_27
"Gute Nacht!", // kStringArsanoMeetup3_28
"Du wachst auf und findest dich in|einem geschlossenen Raum wieder.", // kStringAxacussCell_1
"Du dr\201ckst den Knopf,|aber nichts passiert.", // kStringAxacussCell_2
"Das ist befestigt.", // kStringAxacussCell_3
- // 485
+ // 515
"Bei deinem Fluchtversuch hat|dich der Roboter erschossen.", // kStringAxacussCell_4
"Du i\341t etwas, aber|es schmeckt scheu\341lich.", // kStringAxacussCell_5
"Ok.", // kStringOk
- "", //
- "", //
- // 490
+ "Ach, Ihnen geh\224rt die. Ich habe sie eben im Sand gefunden.", // kStringDialogArsanoMeetup2_1
+ "Nein, tut mir leid.", // kStringDialogArsanoMeetup2_2
+ // 520
+ "Nein, danke. Ich bleibe lieber hier.", // kStringDialogArsanoMeetup2_3
+ "Ja, das w\204re gut.", // kStringDialogArsanoMeetup2_4
+ "Zur Erde.", // kStringDialogArsanoMeetup2_5
+ "Zum Pr\204sident der Galaxis.", // kStringDialogArsanoMeetup2_6
+ "Nach Xenon.", // kStringDialogArsanoMeetup2_7
+ // 525
+ "Mir egal, setzen Sie mich irgendwo ab!", // kStringDialogArsanoMeetup2_8
+ "Ich habe gerade Ihre Brieftasche gefunden!", // kStringDialogArsanoMeetup2_9
+ "Sie lag da dr\201ben hinter einem Felsen.", // kStringDialogArsanoMeetup2_10
+ "Ich wollte nur wissen, ob Sie die Brieftasche wiederhaben.", // kStringDialogArsanoMeetup2_11
+ "\216h ... nein, mein Name ist M\201ller.", // kStringDialogAxacussCorridor5_1
+ // 530
+ "Oh, ich habe mich im Gang vertan.", // kStringDialogAxacussCorridor5_2
+ "W\201rden Sie mich bitte zum Fahrstuhl lassen?", // kStringDialogAxacussCorridor5_3
+ "Ich gehe wieder.", // kStringDialogAxacussCorridor5_4
+ "Dann gehe ich eben wieder.", // kStringDialogAxacussCorridor5_5
+ "Ach, halten Sie's Maul, ich gehe trotzdem!", // kStringDialogAxacussCorridor5_6
+ // 535
+ "Wenn Sie mich durchlassen gebe ich Ihnen ", // kStringDialogAxacussCorridor5_7
+ "Hallo!", // kStringDialogX1
+ "Guten Tag!", // kStringDialogX2
+ "Ich bin's, Horst Hummel.", // kStringDialogX3
+ "",
+ // 540
NULL
};
diff --git a/engines/supernova/msn_def.h b/engines/supernova/msn_def.h
index 551d07a288..565c1b69ef 100644
--- a/engines/supernova/msn_def.h
+++ b/engines/supernova/msn_def.h
@@ -464,6 +464,7 @@ enum StringID {
kStringOutro3, kStringOutro4, kStringOutro5, kStringOutro6, kStringOutro7,
kStringOutro8, kStringOutro9, kStringOutro10, kStringOutro11, kStringOutro12,
kStringOutro13, kStringOutro14, kStringWireAndPlug, kStringWireAndClip, kStringWireAndPlug2,
+ // 275
kStringSignDescription2, kStringCoin, kStringDoorDescription5, kStringDoorDescription6, kStringKeycard2Description2,
kSringSpoolAndClip, kStringIntroCutscene1, kStringIntroCutscene2, kStringIntroCutscene3, kStringIntroCutscene4,
kStringIntroCutscene5, kStringIntroCutscene6, kStringIntroCutscene7, kStringIntroCutscene8, kStringIntroCutscene9,
@@ -517,10 +518,16 @@ enum StringID {
kStringArsanoMeetup3_2, kStringArsanoMeetup3_3, kStringArsanoMeetup3_4, kStringArsanoMeetup3_5, kStringArsanoMeetup3_6,
kStringArsanoMeetup3_7, kStringArsanoMeetup3_8, kStringArsanoMeetup3_9, kStringArsanoMeetup3_10, kStringArsanoMeetup3_11,
kStringArsanoMeetup3_12, kStringArsanoMeetup3_13, kStringArsanoMeetup3_14, kStringArsanoMeetup3_15, kStringArsanoMeetup3_16,
+ // 500
kStringArsanoMeetup3_17, kStringArsanoMeetup3_18, kStringArsanoMeetup3_19, kStringArsanoMeetup3_20, kStringArsanoMeetup3_21,
kStringArsanoMeetup3_22, kStringArsanoMeetup3_23, kStringArsanoMeetup3_24, kStringArsanoMeetup3_25, kStringArsanoMeetup3_26,
kStringArsanoMeetup3_27, kStringArsanoMeetup3_28, kStringAxacussCell_1, kStringAxacussCell_2, kStringAxacussCell_3,
- kStringAxacussCell_4, kStringAxacussCell_5, kStringOk
+ kStringAxacussCell_4, kStringAxacussCell_5, kStringOk, kStringDialogArsanoMeetup2_1, kStringDialogArsanoMeetup2_2,
+ kStringDialogArsanoMeetup2_3, kStringDialogArsanoMeetup2_4, kStringDialogArsanoMeetup2_5, kStringDialogArsanoMeetup2_6, kStringDialogArsanoMeetup2_7,
+ // 525
+ kStringDialogArsanoMeetup2_8, kStringDialogArsanoMeetup2_9, kStringDialogArsanoMeetup2_10, kStringDialogArsanoMeetup2_11, kStringDialogAxacussCorridor5_1,
+ kStringDialogAxacussCorridor5_2, kStringDialogAxacussCorridor5_3, kStringDialogAxacussCorridor5_4, kStringDialogAxacussCorridor5_5, kStringDialogAxacussCorridor5_6,
+ kStringDialogAxacussCorridor5_7, kStringDialogX1, kStringDialogX2, kStringDialogX3
};
static StringID guiCommands[] = {
diff --git a/engines/supernova/rooms.cpp b/engines/supernova/rooms.cpp
index 5126649323..886cd4b785 100644
--- a/engines/supernova/rooms.cpp
+++ b/engines/supernova/rooms.cpp
@@ -1567,10 +1567,9 @@ void ArsanoEntrance::animation() {
}
bool ArsanoEntrance::interact(Action verb, Object &obj1, Object &obj2) {
- // TODO: Refactor row/dialog data structure for dialog()
- byte zeilen1[5] = {1, 1, 1, 1, 1};
- byte zeilen2[5] = {1, 1, 1, 1, 1};
- byte zeilen3[2] = {1, 1};
+ static byte row1[6] = {1, 1, 1, 1, 1, 0};
+ static byte row2[6] = {1, 1, 1, 1, 1, 0};
+ static byte row3[6] = {1, 1, 0, 0, 0, 0};
char e;
@@ -1586,7 +1585,7 @@ bool ArsanoEntrance::interact(Action verb, Object &obj1, Object &obj2) {
} else if (_gm->_state._shoes > 1) {
_gm->removeSentence(2, 2);
}
- switch (e = _gm->dialog(5, nullptr, nullptr, 2)) { // row2, dialog2
+ switch (e = _gm->dialog(5, row2, _dialog2, 2)) {
case 0:
_gm->reply(kStringArsanoEntrance3, 1, _gm->invertSection(1));
_gm->reply(kStringArsanoEntrance4, 1, _gm->invertSection(1));
@@ -1610,10 +1609,8 @@ bool ArsanoEntrance::interact(Action verb, Object &obj1, Object &obj2) {
_gm->reply(kStringArsanoEntrance9, 1, _gm->invertSection(1));
}
} while (e != 4);
- } else {
- if (_gm->dialog(5, nullptr, nullptr, 0) != 4) // row2, dialog2
- _gm->reply(kStringArsanoEntrance10, 1, _gm->invertSection(1));
- }
+ } else if (_gm->dialog(5, row2, _dialog2, 0) != 4)
+ _gm->reply(kStringArsanoEntrance10, 1, _gm->invertSection(1));
}
} else if ((verb == ACTION_WALK) && (obj1._id == STAIRCASE) && (_gm->_state._shoes != 3)) {
_gm->drawImage(3);
@@ -1638,7 +1635,7 @@ bool ArsanoEntrance::interact(Action verb, Object &obj1, Object &obj2) {
_gm->reply(kStringArsanoEntrance14, 1, _gm->invertSection(1));
e = 0;
while ((e < 3) && (_shown[kMaxSection - 1] != 15)) {
- switch (e = _gm->dialog(5, nullptr, nullptr, 1)) { // row1, dialog1
+ switch (e = _gm->dialog(5, row1, _dialog1, 1)) {
case 0:
_gm->reply(kStringArsanoEntrance15, 1, 1 + 128);
break;
@@ -1667,7 +1664,7 @@ bool ArsanoEntrance::interact(Action verb, Object &obj1, Object &obj2) {
_gm->removeSentence(0, 1);
}
} else {
- _gm->dialog(2, nullptr, nullptr, 0); // row3, dialog3
+ _gm->dialog(2, row3, _dialog3, 0);
_gm->reply(kStringArsanoEntrance10, 1, 1 + 128);
}
}
@@ -1959,7 +1956,7 @@ void ArsanoRoger::animation() {
}
bool ArsanoRoger::interact(Action verb, Object &obj1, Object &obj2) {
- byte zeilen1[4] = {1, 1, 1, 1};
+ static byte row1[6] = {1, 1, 1, 1, 0, 0};
if ((verb == ACTION_TAKE) && (obj1._id == WALLET)) {
if (isSectionVisible(3)) {
@@ -1973,7 +1970,7 @@ bool ArsanoRoger::interact(Action verb, Object &obj1, Object &obj2) {
if (isSectionVisible(3))
_vm->renderMessage(kStringArsanoRoger5);
else {
- switch (_gm->dialog(4, nullptr, nullptr, 1)) { // row1, dialog1
+ switch (_gm->dialog(4, row1, _dialog1, 1)) {
case 0:
_gm->reply(kStringArsanoRoger6, 2, 2 + 128);
_gm->reply(kStringArsanoRoger7, 2, 2 + 128);
@@ -2144,10 +2141,10 @@ void ArsanoMeetup2::onEntrance() {
}
bool ArsanoMeetup2::interact(Action verb, Object &obj1, Object &obj2) {
- byte zeilen1[2] = {1, 1};
- byte zeilen2[2] = {1, 1};
- byte zeilen3[4] = {1, 1, 1, 1};
- byte zeilen4[2] = {2, 1};
+ static byte row1[6] = {1, 1, 0, 0, 0, 0};
+ static byte row2[6] = {1, 1, 0, 0, 0, 0};
+ static byte row3[6] = {1, 1, 1, 1, 0, 0};
+ static byte row4[6] = {2, 1, 0, 0, 0, 0};
if (((verb == ACTION_WALK) &&
((obj1._id == SPACESHIP) || (obj1._id == ROGER_W))) ||
@@ -2158,13 +2155,13 @@ bool ArsanoMeetup2::interact(Action verb, Object &obj1, Object &obj2) {
bool found;
if (_gm->_rooms[MEETUP2]->isSectionVisible(kMaxSection - 2)) {
_gm->reply(kStringArsanoMeetup2_3, 1, 1 + 128);
- found = !_gm->dialog(2, nullptr, nullptr, 0); // row4, dialog4
+ found = !_gm->dialog(2, row4, _dialog4, 0);
if (!(found))
_gm->reply(kStringArsanoMeetup2_4, 1, 1 + 128);
} else {
_gm->reply(kStringArsanoMeetup2_5, 1, 1 + 128);
_gm->reply(kStringArsanoMeetup2_6, 1, 1 + 128);
- found = !_gm->dialog(2, nullptr, nullptr, 0); // row1, dialog1
+ found = !_gm->dialog(2, row1, _dialog1, 0);
_gm->_rooms[MEETUP2]->setSectionVisible(kMaxSection - 2, true);
}
if (found) {
@@ -2173,10 +2170,10 @@ bool ArsanoMeetup2::interact(Action verb, Object &obj1, Object &obj2) {
_gm->_inventory.remove(*_gm->_rooms[ROGER]->getObject(8));
_gm->reply(kStringArsanoMeetup2_7, 1, 1 + 128);
_gm->reply(kStringArsanoMeetup2_8, 1, 1 + 128);
- bool flight = _gm->dialog(2, nullptr, nullptr, 0); // row2, dialog2
+ bool flight = _gm->dialog(2, row2, _dialog2, 0);
if (flight) {
_gm->reply(kStringArsanoMeetup2_9, 1, 1 + 128);
- _gm->dialog(4, nullptr, nullptr, 0); // row3, dialog3
+ _gm->dialog(4, row3, _dialog3, 0);
_gm->reply(kStringArsanoMeetup2_10, 1, 1 + 128);
} else {
_gm->reply(kStringArsanoMeetup2_11, 1, 1 + 128);
@@ -2246,8 +2243,11 @@ bool ArsanoMeetup2::interact(Action verb, Object &obj1, Object &obj2) {
}
bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) {
- byte zeilen2[4] = {1, 1, 1, 1};
- byte zeilen3[2] = {1, 1};
+ byte row2[6] = {1, 1, 1, 1, 0, 0};
+ byte row3[6] = {1, 1, 0, 0, 0, 0};
+
+ // TODO: Hack, to be move away and renamed when the other uses are found
+ byte rowsX[6] = {1, 1, 1, 0, 0, 0};
if ((verb == ACTION_WALK) && (obj1._id == STAR))
_vm->renderMessage(kStringArsanoMeetup2);
@@ -2256,11 +2256,12 @@ bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) {
_vm->paletteBrightness();
_gm->getInput();
g_system->fillScreen(kColorBlack);
+ // CHECKME: Doesn't look complete - check sb_meetup()
} else if ((verb == ACTION_WALK) && (obj1._id == UFO)) {
g_system->fillScreen(kColorBlack);
_vm->renderImage(36, 0);
_vm->paletteBrightness();
- _gm->dialog(3, nullptr, nullptr, 0); // rowX, dialogX
+ _gm->dialog(3, rowsX, _dialogsX, 0);
_vm->renderImage(36, 1);
_gm->wait2(3);
_vm->renderImage(36, 2);
@@ -2286,7 +2287,7 @@ bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) {
_gm->reply(kStringArsanoMeetup3_2, 1, 1 + 128);
do {
- int i = _gm->dialog(4, nullptr, nullptr, 2); // row2, dialog2
+ int i = _gm->dialog(4, row2, _dialog2, 2);
switch (i) {
case 0:
_gm->reply(kStringArsanoMeetup3_3, 1, 1 + 128);
@@ -2300,7 +2301,7 @@ bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) {
_gm->reply(kStringArsanoMeetup3_9, 2, 2 + 128);
_gm->reply(kStringArsanoMeetup3_10, 2, 2 + 128);
_gm->reply(kStringArsanoMeetup3_11, 2, 2 + 128);
- if (_gm->dialog(2, nullptr, nullptr, 0)) { // row3, dialog3
+ if (_gm->dialog(2, row3, _dialog3, 0)) {
_gm->reply(kStringArsanoMeetup3_12, 2, 2 + 128);
_gm->say(kStringArsanoMeetup3_13);
}
@@ -2308,7 +2309,7 @@ bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) {
_gm->reply(kStringArsanoMeetup3_15, 2, 2 + 128);
_gm->reply(kStringArsanoMeetup3_16, 2, 2 + 128);
_gm->reply(kStringArsanoMeetup3_17, 2, 2 + 128);
- if (_gm->dialog(2, nullptr, nullptr, 0)) { // row3, dialog3
+ if (_gm->dialog(2, row3, _dialog3, 0)) {
_gm->reply(kStringArsanoMeetup3_12, 2, 2 + 128);
_gm->say(kStringArsanoMeetup3_13);
}
@@ -2580,8 +2581,7 @@ void AxacussCorridor5::onEntrance() {
bool AxacussCorridor5::interact(Action verb, Object &obj1, Object &obj2) {
// TODO: needs to be refactored
-// static char
-// rows[] = {1, 1, 1, 1},
+ static byte rows[6] = {1, 1, 1, 1, 0, 0};
int sum;
@@ -2595,22 +2595,23 @@ bool AxacussCorridor5::interact(Action verb, Object &obj1, Object &obj2) {
} else {
_gm->_guiEnabled = true;
_gm->reply("Halt! Sie sind doch dieser Hummel.|Bleiben Sie sofort stehen!", 1, 1 + 128);
- if (_gm->dialog(2, nullptr, nullptr, 0)) // rows, dialog1
+ if (_gm->dialog(2, rows, _dialog1, 0))
_gm->reply("Sehr witzig!", 1, 1 + 128);
else {
_gm->reply("Kann auch sein, auf jeden Fall|sind Sie der Nicht-Axacussaner.", 1, 1 + 128);
bestechen:
- if (_gm->dialog(2, nullptr, nullptr, 0) == 0) { // rows, dialog2
+ if (_gm->dialog(2, rows, _dialog2, 0) == 0) {
_gm->reply("Nein!", 1, 1 + 128);
setSectionVisible(kMaxSection - 2, false);
if (_gm->_state._money == 0) {
_gm->removeSentence(2, 2);
_gm->removeSentence(3, 2);
} else {
- _dialog3[2] += Common::String::format("%d Xa.", _gm->_state._money - 200);
- _dialog3[3] += Common::String::format("%d Xa.", _gm->_state._money);
+ // TODO: Handle string manipulation in dialogs
+ // _dialog3[2] += Common::String::format("%d Xa.", _gm->_state._money - 200);
+ // _dialog3[3] += Common::String::format("%d Xa.", _gm->_state._money);
}
- switch (_gm->dialog(4, nullptr, nullptr, 2)) { // rows, dialog3
+ switch (_gm->dialog(4, rows, _dialog3, 2)) {
case 1:
_gm->wait2(3);
_gm->drawImage(1);
diff --git a/engines/supernova/rooms.h b/engines/supernova/rooms.h
index 8e857e889e..d609b0d470 100644
--- a/engines/supernova/rooms.h
+++ b/engines/supernova/rooms.h
@@ -751,31 +751,33 @@ public:
_id = MEETUP2;
_shown[0] = kShownTrue;
- _objectState[0] = Object(_id, kStringRoger,kStringDefaultDescription,ROGER_W,TALK,255,255,0);
- _objectState[1] = Object(_id, kStringSpaceshift,kStringDefaultDescription,SPACESHIP,COMBINABLE,255,255,0);
- _objectState[2] = Object(_id, kStringCave,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CAVE,22);
-
- _dialog1[0] = "Ach, Ihnen geh\224rt die. Ich habe sie eben im Sand gefunden.";
- _dialog1[1] = "Nein, tut mir leid.";
- _dialog2[0] = "Nein, danke. Ich bleibe lieber hier.";
- _dialog2[1] = "Ja, das w\204re gut.";
- _dialog3[0] = "Zur Erde.";
- _dialog3[1] = "Zum Pr\204sident der Galaxis.";
- _dialog3[2] = "Nach Xenon.";
- _dialog3[3] = "Mir egal, setzen Sie mich irgendwo ab!";
- _dialog4[0] = "Ich habe gerade Ihre Brieftasche gefunden!";
- _dialog4[1] = "Sie lag da dr\201ben hinter einem Felsen.";
- _dialog4[2] = "Ich wollte nur wissen, ob Sie die Brieftasche wiederhaben.";
+ _objectState[0] = Object(_id, kStringRoger, kStringDefaultDescription, ROGER_W, TALK, 255, 255, 0);
+ _objectState[1] = Object(_id, kStringSpaceshift, kStringDefaultDescription, SPACESHIP, COMBINABLE, 255, 255, 0);
+ _objectState[2] = Object(_id, kStringCave, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, CAVE, 22);
+
+ _dialog1[0] = kStringDialogArsanoMeetup2_1;
+ _dialog1[1] = kStringDialogArsanoMeetup2_2;
+ _dialog2[0] = kStringDialogArsanoMeetup2_3;
+ _dialog2[1] = kStringDialogArsanoMeetup2_4;
+ _dialog3[0] = kStringDialogArsanoMeetup2_5;
+ _dialog3[1] = kStringDialogArsanoMeetup2_6;
+ _dialog3[2] = kStringDialogArsanoMeetup2_7;
+ _dialog3[3] = kStringDialogArsanoMeetup2_8;
+ _dialog4[0] = kStringDialogArsanoMeetup2_9;
+ _dialog4[1] = kStringDialogArsanoMeetup2_10;
+ _dialog4[2] = kStringDialogArsanoMeetup2_11;
}
virtual void onEntrance();
virtual bool interact(Action verb, Object &obj1, Object &obj2);
private:
- Common::String _dialog1[2];
- Common::String _dialog2[2];
- Common::String _dialog3[4];
- Common::String _dialog4[3];
+ // TODO: change to 6, fix initialization
+ StringID _dialog1[2];
+ StringID _dialog2[2];
+ StringID _dialog3[4];
+ StringID _dialog4[3];
+
bool _found;
bool _flug;
};
@@ -799,6 +801,11 @@ public:
_dialog2[3] = kStringDialogArsanoMeetup3_3;
_dialog3[0] = kStringDialogArsanoMeetup3_4;
_dialog3[1] = kStringDialogArsanoMeetup3_5;
+
+ // TODO: Hack, to be move away and renamed when the other uses are found
+ _dialogsX[0] = kStringDialogX1;
+ _dialogsX[1] = kStringDialogX2;
+ _dialogsX[2] = kStringDialogX3;
}
virtual bool interact(Action verb, Object &obj1, Object &obj2);
@@ -806,6 +813,10 @@ public:
private:
StringID _dialog2[4];
StringID _dialog3[2];
+
+ // TODO: Hack, to be move away and renamed when the other uses are found
+ StringID _dialogsX[6];
+ //
};
// Axacuss
@@ -954,23 +965,24 @@ public:
_objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,DOOR,EXIT,2,2,0,NULLROOM,2);
_objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR6,22);
- _dialog1[0] = "\216h ... nein, mein Name ist M\201ller.";
- _dialog1[1] = "Oh, ich habe mich im Gang vertan.";
- _dialog2[0] = "W\201rden Sie mich bitte zum Fahrstuhl lassen?";
- _dialog2[1] = "Ich gehe wieder.";
- _dialog3[0] = "Dann gehe ich eben wieder.";
- _dialog3[1] = "Ach, halten Sie's Maul, ich gehe trotzdem!";
- _dialog3[2] = "Wenn Sie mich durchlassen gebe ich Ihnen ";
- _dialog3[3] = "Wenn Sie mich durchlassen gebe ich Ihnen ";
+ _dialog1[0] = kStringDialogAxacussCorridor5_1;
+ _dialog1[1] = kStringDialogAxacussCorridor5_2;
+ _dialog2[0] = kStringDialogAxacussCorridor5_3;
+ _dialog2[1] = kStringDialogAxacussCorridor5_4;
+ _dialog3[0] = kStringDialogAxacussCorridor5_5;
+ _dialog3[1] = kStringDialogAxacussCorridor5_6;
+ _dialog3[2] = kStringDialogAxacussCorridor5_7;
+ _dialog3[3] = kStringDialogAxacussCorridor5_7;
}
virtual void onEntrance();
virtual bool interact(Action verb, Object &obj1, Object &obj2);
private:
- Common::String _dialog1[2];
- Common::String _dialog2[2];
- Common::String _dialog3[4];
+ // TODO: Change to 6, or change struct, and fix initialization
+ StringID _dialog1[2];
+ StringID _dialog2[2];
+ StringID _dialog3[4];
};
class AxacussCorridor6 : public Room {
public:
diff --git a/engines/supernova/state.cpp b/engines/supernova/state.cpp
index 39e086ee56..e95c4ecfef 100644
--- a/engines/supernova/state.cpp
+++ b/engines/supernova/state.cpp
@@ -799,7 +799,7 @@ void GameManager::reply(const char *text, int aus1, int aus2) {
// STUB
}
-int GameManager::dialog(int num, byte *rowLength[], const char **text[6], int number) {
+int GameManager::dialog(int num, byte rowLength[6], StringID text[6], int number) {
// STUB
return 0;
}
diff --git a/engines/supernova/state.h b/engines/supernova/state.h
index 875a89a01b..d72cd176e6 100644
--- a/engines/supernova/state.h
+++ b/engines/supernova/state.h
@@ -180,7 +180,7 @@ public:
void setAnimationTimer(int ticks);
void dead(const char *message);
void dead(StringID messageId);
- int dialog(int num, byte *rowLength[6], const char **text[6], int number);
+ int dialog(int num, byte rowLength[6], StringID text[6], int number);
void sentence(int number, bool brightness);
void removeSentence(int sentence, int number);
void addSentence(int sentence, int number);