aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devtools/create_supernova/gametext.h84
-rw-r--r--engines/supernova/msn_def.h11
-rw-r--r--engines/supernova/rooms.cpp94
-rw-r--r--engines/supernova/rooms.h4
4 files changed, 102 insertions, 91 deletions
diff --git a/devtools/create_supernova/gametext.h b/devtools/create_supernova/gametext.h
index 83867d266f..99cdb1d58a 100644
--- a/devtools/create_supernova/gametext.h
+++ b/devtools/create_supernova/gametext.h
@@ -373,56 +373,56 @@ const char *gameText[] = {
"Es ist die Keycard des Commanders.", // kStringKeycard2Description2
// 280
"Kabelrolle mit L\201sterklemme", // kSringSpoolAndClip
- "", //
- "", //
- "", //
- "", //
+ "Zwei Tage nach dem Start|im Cockpit der \"Supernova\" ...", // kStringIntroCutscene1
+ "Entferung von der Sonne: 1 500 000 km.|Gehen Sie auf 8000 hpm, Captain!", // kStringIntroCutscene2
+ "Ok, Sir.", // kStringIntroCutscene3
+ "Geschwindigkeit:", // kStringIntroCutscene4
// 285
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Zweitausend hpm", // kStringIntroCutscene5
+ "Dreitausend", // kStringIntroCutscene6
+ "Viertausend", // kStringIntroCutscene7
+ "F\201nftausend", // kStringIntroCutscene8
+ "Sechstausend", // kStringIntroCutscene9
// 290
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Siebentausend", // kStringIntroCutscene10
+ "Achttau...", // kStringIntroCutscene11
+ "Was war das?", // kStringIntroCutscene12
+ "Keine Ahnung, Sir.", // kStringIntroCutscene13
+ "Ingenieur an Commander, bitte kommen!", // kStringIntroCutscene14
// 295
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Was ist los?", // kStringIntroCutscene15
+ "Wir haben einen Druckabfall im Hauptantriebssystem, Sir.|Einen Moment, ich schaue sofort nach, woran es liegt.", // kStringIntroCutscene16
+ "Schei\341e, der Ionenantrieb ist explodiert!|Die Teile sind \201ber den ganzen|Maschinenraum verstreut.", // kStringIntroCutscene17
+ "Ach, du meine G\201te!|Gibt es irgendeine M\224glichkeit,|den Schaden schnell zu beheben?", // kStringIntroCutscene18
+ "Nein, Sir. Es sieht schlecht aus.", // kStringIntroCutscene19
// 300
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Hmm, die Erde zu alarmieren, w\201rde zu lange dauern.", // kStringIntroCutscene20
+ "Ich darf kein Risiko eingehen.|Captain, geben Sie sofort Alarm!", // kStringIntroCutscene21
+ "Commander an alle! Achtung, Achtung!|Begeben Sie sich sofort zum Notraumschiff!", // kStringIntroCutscene22
+ "Ich wiederhole:|Begeben Sie sich sofort zum Notraumschiff!", // kStringIntroCutscene23
+ "Captain, bereiten Sie alles für den Start vor!|Wir m\201ssen zur\201ck zur Erde!", // kStringIntroCutscene24
// 305
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Eine Stunde sp\204ter ...", // kStringIntroCutscene25
+ "Die Besatzung hat die \"Supernova\" verlassen.", // kStringIntroCutscene26
+ "Das Schiff wird zwar in acht Jahren sein Ziel|erreichen, allerdings ohne Mannschaft.", // kStringIntroCutscene27
+ "Das ist das kl\204gliche Ende|der Mission Supernova.", // kStringIntroCutscene28
+ "Sie k\224nnen jetzt ihren Computer ausschalten.", // kStringIntroCutscene29
// 310
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Halt!", // kStringIntroCutscene30
+ "Warten Sie!", // kStringIntroCutscene31
+ "Es regt sich etwas im Schiff.", // kStringIntroCutscene32
+ "Uuuuaaaahhhhh", // kStringIntroCutscene33
+ "Huch, ich bin ja gefesselt!|Wo bin ich?", // kStringIntroCutscene34
// 315
- "", //
- "", //
- "", //
- "", //
- "", //
+ "Ach so, das sind ja die Sicherheitsgurte.|Ich arbeite ja jetzt in diesem Raumschiff hier.", // kStringIntroCutscene35
+ "Was? Schon zwei Uhr! Wieso|hat mich denn noch keiner|aus dem Bett geschmissen?", // kStringIntroCutscene36
+ "Ich werde mal nachsehen.", // kStringIntroCutscene37
+ "Autsch!", // kStringIntroCutscene38
+ "Schei\341etagenbett!", // kStringIntroCutscene39
// 320
- "", //
- "", //
- "", //
+ "Erst mal den Lichtschalter finden.", // kStringIntroCutscene40
+ "Hmm, gar nicht so einfach|bei Schwerelosigkeit.", // kStringIntroCutscene41
+ "Ah, hier ist er.", // kStringIntroCutscene42
"", //
"", //
// 325
diff --git a/engines/supernova/msn_def.h b/engines/supernova/msn_def.h
index 84c08647cd..ad51db305d 100644
--- a/engines/supernova/msn_def.h
+++ b/engines/supernova/msn_def.h
@@ -464,7 +464,16 @@ enum StringID {
kStringOutro8, kStringOutro9, kStringOutro10, kStringOutro11, kStringOutro12,
kStringOutro13, kStringOutro14, kStringWireAndPlug, kStringWireAndClip, kStringWireAndPlug2,
kStringSignDescription2, kStringCoin, kStringDoorDescription5, kStringDoorDescription6, kStringKeycard2Description2,
- kSringSpoolAndClip
+ kSringSpoolAndClip, kStringIntroCutscene1, kStringIntroCutscene2, kStringIntroCutscene3, kStringIntroCutscene4,
+ kStringIntroCutscene5, kStringIntroCutscene6, kStringIntroCutscene7, kStringIntroCutscene8, kStringIntroCutscene9,
+ kStringIntroCutscene10, kStringIntroCutscene11, kStringIntroCutscene12, kStringIntroCutscene13, kStringIntroCutscene14,
+ kStringIntroCutscene15, kStringIntroCutscene16, kStringIntroCutscene17, kStringIntroCutscene18, kStringIntroCutscene19,
+ // 300
+ kStringIntroCutscene20, kStringIntroCutscene21, kStringIntroCutscene22, kStringIntroCutscene23, kStringIntroCutscene24,
+ kStringIntroCutscene25, kStringIntroCutscene26, kStringIntroCutscene27, kStringIntroCutscene28, kStringIntroCutscene29,
+ kStringIntroCutscene30, kStringIntroCutscene31, kStringIntroCutscene32, kStringIntroCutscene33, kStringIntroCutscene34,
+ kStringIntroCutscene35, kStringIntroCutscene36, kStringIntroCutscene37, kStringIntroCutscene38, kStringIntroCutscene39,
+ kStringIntroCutscene40, kStringIntroCutscene41, kStringIntroCutscene42
};
static StringID guiCommands[] = {
diff --git a/engines/supernova/rooms.cpp b/engines/supernova/rooms.cpp
index b326840b43..fde692e317 100644
--- a/engines/supernova/rooms.cpp
+++ b/engines/supernova/rooms.cpp
@@ -198,9 +198,10 @@ void Intro::animate(int filenumber, int section1, int section2, int duration) {
}
void Intro::animate(int filenumber, int section1, int section2, int duration,
- MessagePosition position, const char *text) {
+ MessagePosition position, StringID textId) {
+ const Common::String& text = _vm->getGameString(textId);
_vm->renderMessage(text, position);
- int delay = (Common::strnlen(text, 512) + 20) * (10 - duration) * _vm->_textSpeed / 400;
+ int delay = (MIN(text.size(), (uint)512) + 20) * (10 - duration) * _vm->_textSpeed / 400;
while (delay) {
if (section1)
_vm->renderImage(filenumber, section1);
@@ -214,10 +215,11 @@ void Intro::animate(int filenumber, int section1, int section2, int duration,
}
void Intro::animate(int filenumber, int section1, int section2, int section3, int section4,
- int duration, MessagePosition position, const char *text) {
+ int duration, MessagePosition position, StringID textId) {
+ const Common::String& text = _vm->getGameString(textId);
_vm->renderMessage(text, position);
if (duration == 0)
- duration = (Common::strnlen(text, 512) + 20) * _vm->_textSpeed / 40;
+ duration = (MIN(text.size(), (uint)512) + 20) * _vm->_textSpeed / 40;
while(duration) {
_vm->renderImage(filenumber, section1);
@@ -241,7 +243,7 @@ void Intro::cutscene() {
_vm->_system->fillScreen(kColorBlack);
_vm->_menuBrightness = 255;
_vm->paletteBrightness();
- animate(31, 0, 0, 0, kMessageNormal, "Zwei Tage nach dem Start|im Cockpit der \"Supernova\" ...");
+ animate(31, 0, 0, 0, kMessageNormal, kStringIntroCutscene1);
_vm->_menuBrightness = 0;
_vm->paletteBrightness();
exitOnEscape(1);
@@ -250,13 +252,13 @@ void Intro::cutscene() {
_vm->renderImage(9, 1);
_vm->renderImage(9, 9);
_vm->paletteFadeIn();
- animate(9,11,10,6,kMessageRight,"Entferung von der Sonne: 1 500 000 km.|Gehen Sie auf 8000 hpm, Captain!");
+ animate(9,11,10,6,kMessageRight,kStringIntroCutscene2);
_vm->renderImage(9, 3);
exitOnEscape(4);
_vm->renderImage(9, 4);
animate(9, 11,10,3); // test duration
_vm->removeMessage();
- animate(9, 5,4,0,kMessageLeft,"Ok, Sir.");
+ animate(9, 5,4,0,kMessageLeft,kStringIntroCutscene3);
_vm->renderImage(9, 3);
exitOnEscape(3);
_vm->renderImage(9, 2);
@@ -265,16 +267,16 @@ void Intro::cutscene() {
exitOnEscape(6);
_vm->renderImage(9, 6);
exitOnEscape(6);
- animate(9, 0,0,0,kMessageLeft,"Geschwindigkeit:");
- _vm->renderMessage("Zweitausend hpm", kMessageLeft);
+ animate(9, 0,0,0,kMessageLeft,kStringIntroCutscene4);
+ _vm->renderMessage(kStringIntroCutscene5, kMessageLeft);
exitOnEscape(28);
_vm->removeMessage();
- _vm->renderMessage("Dreitausend", kMessageLeft);
+ _vm->renderMessage(kStringIntroCutscene6, kMessageLeft);
exitOnEscape(28);
_vm->removeMessage();
- const char *textCounting[4] =
- {"Viertausend","F\201nftausend","Sechstausend","Siebentausend"};
+ StringID textCounting[4] =
+ {kStringIntroCutscene7,kStringIntroCutscene8,kStringIntroCutscene9,kStringIntroCutscene10};
_vm->renderImage(31, 0);
_vm->paletteBrightness();
for (int i = 0; i < 4; ++i){
@@ -285,7 +287,7 @@ void Intro::cutscene() {
}
_vm->removeMessage();
}
- _vm->renderMessage("Achttau...", kMessageLeft);
+ _vm->renderMessage(kStringIntroCutscene11, kMessageLeft);
_vm->renderImage(31, 6);
exitOnEscape(3);
_vm->renderImage(31, 3);
@@ -304,29 +306,29 @@ void Intro::cutscene() {
_vm->paletteBrightness();
_vm->renderBox(0, 138, 320, 62, kColorBlack);
_vm->paletteBrightness();
- animate(9, 11,10,0,kMessageRight,"Was war das?");
+ animate(9, 11,10,0,kMessageRight,kStringIntroCutscene12);
_vm->renderImage(9, 3);
exitOnEscape(3);
_vm->renderImage(9, 4);
- animate(9, 5,4,0,kMessageLeft,"Keine Ahnung, Sir.");
- animate(9, 0,0,0,kMessageCenter,"Ingenieur an Commander, bitte kommen!");
+ animate(9, 5,4,0,kMessageLeft,kStringIntroCutscene13);
+ animate(9, 0,0,0,kMessageCenter,kStringIntroCutscene14);
_vm->renderImage(9, 12);
exitOnEscape(2);
_vm->renderImage(9, 13);
exitOnEscape(2);
_vm->renderImage(9, 14);
- animate(9, 19,20,0,kMessageRight,"Was ist los?");
- animate(9, 0,0,0,kMessageCenter,"Wir haben einen Druckabfall im Hauptantriebssystem, Sir.|Einen Moment, ich schaue sofort nach, woran es liegt.");
+ animate(9, 19,20,0,kMessageRight,kStringIntroCutscene15);
+ animate(9, 0,0,0,kMessageCenter,kStringIntroCutscene16);
exitOnEscape(20);
- animate(9, 0,0,0,kMessageCenter,"Schei\341e, der Ionenantrieb ist explodiert!|Die Teile sind \201ber den ganzen|Maschinenraum verstreut.");
- animate(9, 19,20,0,kMessageRight,"Ach, du meine G\201te!|Gibt es irgendeine M\224glichkeit,|den Schaden schnell zu beheben?");
- animate(9, 0,0,0,kMessageCenter,"Nein, Sir. Es sieht schlecht aus.");
+ animate(9, 0,0,0,kMessageCenter,kStringIntroCutscene17);
+ animate(9, 19,20,0,kMessageRight,kStringIntroCutscene18);
+ animate(9, 0,0,0,kMessageCenter,kStringIntroCutscene19);
_vm->renderImage(9, 16);
exitOnEscape(3);
_vm->renderImage(9, 17);
- animate(9, 19,20,18,17,0,kMessageRight,"Hmm, die Erde zu alarmieren, w\201rde zu lange dauern.");
- animate(9, 19,20,18,17,0,kMessageRight,"Ich darf kein Risiko eingehen.|Captain, geben Sie sofort Alarm!");
- animate(9, 5,4,0,kMessageLeft,"Ok, Sir.");
+ animate(9, 19,20,18,17,0,kMessageRight,kStringIntroCutscene20);
+ animate(9, 19,20,18,17,0,kMessageRight,kStringIntroCutscene21);
+ animate(9, 5,4,0,kMessageLeft,kStringIntroCutscene3);
_vm->renderImage(9, 3);
exitOnEscape(3);
_vm->renderImage(9, 2);
@@ -343,16 +345,16 @@ void Intro::cutscene() {
_vm->renderImage(9, 16);
exitOnEscape(3);
_vm->renderImage(9, 15);
- animate(9, 19,20,0,kMessageRight,"Commander an alle! Achtung, Achtung!|Begeben Sie sich sofort zum Notraumschiff!");
- animate(9, 19,20,0,kMessageRight,"Ich wiederhole:|Begeben Sie sich sofort zum Notraumschiff!");
+ animate(9, 19,20,0,kMessageRight,kStringIntroCutscene22);
+ animate(9, 19,20,0,kMessageRight,kStringIntroCutscene23);
exitOnEscape(10);
_vm->renderImage(9, 13);
exitOnEscape(2);
_vm->renderImage(9, 12);
exitOnEscape(2);
_vm->renderImage(9, 9);
- animate(9, 11,10,0,kMessageRight,"Captain, bereiten Sie alles für den Start vor!|Wir m\201ssen zur\201ck zur Erde!");
- animate(9, 5,4,0,kMessageLeft,"Ok, Sir.");
+ animate(9, 11,10,0,kMessageRight,kStringIntroCutscene24);
+ animate(9, 5,4,0,kMessageLeft,kStringIntroCutscene3);
_vm->paletteFadeOut();
while (_vm->_mixer->isSoundHandleActive(_vm->_soundHandle))
@@ -361,20 +363,20 @@ void Intro::cutscene() {
_vm->_system->fillScreen(kColorBlack);
_vm->_menuBrightness = 255;
_vm->paletteBrightness();
- animate(9,0,0,0,kMessageNormal,"Eine Stunde sp\204ter ...");
+ animate(9,0,0,0,kMessageNormal,kStringIntroCutscene25);
_vm->_menuBrightness = 5;
_vm->paletteBrightness();
_vm->renderImage(31, 0);
_vm->paletteFadeIn();
- animate(31, 0,0,0,kMessageNormal,"Die Besatzung hat die \"Supernova\" verlassen.");
- animate(31, 0,0,0,kMessageNormal,"Das Schiff wird zwar in acht Jahren sein Ziel|erreichen, allerdings ohne Mannschaft.");
- animate(31, 0,0,0,kMessageNormal,"Das ist das kl\204gliche Ende|der Mission Supernova.");
- animate(31, 0,0,0,kMessageNormal,"Sie k\224nnen jetzt ihren Computer ausschalten.");
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene26);
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene27);
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene28);
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene29);
exitOnEscape(54);
- animate(31, 0,0,0,kMessageNormal,"Halt!");
- animate(31, 0,0,0,kMessageNormal,"Warten Sie!");
- animate(31, 0,0,0,kMessageNormal,"Es regt sich etwas im Schiff.");
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene30);
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene31);
+ animate(31, 0,0,0,kMessageNormal,kStringIntroCutscene32);
_vm->_brightness = 0;
_vm->paletteBrightness();
@@ -391,20 +393,20 @@ void Intro::cutscene() {
while (_vm->_mixer->isSoundHandleActive(_vm->_soundHandle))
;
exitOnEscape(30);
- animate(22, 0,0,0,kMessageNormal,"Uuuuaaaahhhhh");
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene33);
exitOnEscape(18);
- animate(22, 0,0,0,kMessageNormal,"Huch, ich bin ja gefesselt!|Wo bin ich?");
- animate(22, 0,0,0,kMessageNormal,"Ach so, das sind ja die Sicherheitsgurte.|Ich arbeite ja jetzt in diesem Raumschiff hier.");
- animate(22, 0,0,0,kMessageNormal,"Was? Schon zwei Uhr! Wieso|hat mich denn noch keiner|aus dem Bett geschmissen?");
- animate(22, 0,0,0,kMessageNormal,"Ich werde mal nachsehen.");
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene34);
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene35);
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene36);
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene37);
exitOnEscape(18);
- animate(22, 0,0,0,kMessageNormal,"Autsch!");
- animate(22, 0,0,0,kMessageNormal,"Schei\341etagenbett!");
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene38);
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene39);
exitOnEscape(18);
- animate(22, 0,0,0,kMessageNormal,"Erst mal den Lichtschalter finden.");
- animate(22, 0,0,0,kMessageNormal,"Hmm, gar nicht so einfach|bei Schwerelosigkeit.");
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene40);
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene41);
exitOnEscape(36);
- animate(22, 0,0,0,kMessageNormal,"Ah, hier ist er.");
+ animate(22, 0,0,0,kMessageNormal,kStringIntroCutscene42);
_vm->removeMessage();
#undef exitOnEscape
diff --git a/engines/supernova/rooms.h b/engines/supernova/rooms.h
index 9b8b4e291d..11d36b10d9 100644
--- a/engines/supernova/rooms.h
+++ b/engines/supernova/rooms.h
@@ -94,9 +94,9 @@ public:
private:
void animate(int filenumber, int section1, int section2, int duration);
void animate(int filenumber, int section1, int section2, int duration, MessagePosition position,
- const char *text);
+ StringID text);
void animate(int filenumber, int section1, int section2, int section3, int section4, int duration,
- MessagePosition position, const char *text);
+ MessagePosition position, StringID text);
void titleScreen();
void titleFadeIn();