aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2012-02-12 19:40:03 +1100
committerStrangerke2012-04-06 08:20:59 +0200
commitc81b81692b62c5fefe54e8d4399cd0a106c53921 (patch)
tree423d38e1c4cdb2ea44a76ab2a2074f154181dd54 /engines
parente57a6a8c07bac4d9b69d89baca638beda34485d6 (diff)
downloadscummvm-rg350-c81b81692b62c5fefe54e8d4399cd0a106c53921.tar.gz
scummvm-rg350-c81b81692b62c5fefe54e8d4399cd0a106c53921.tar.bz2
scummvm-rg350-c81b81692b62c5fefe54e8d4399cd0a106c53921.zip
MORTEVIELLE: Added support for using the static string list added to mort.dat
Diffstat (limited to 'engines')
-rw-r--r--engines/mortevielle/actions.cpp77
-rw-r--r--engines/mortevielle/detection.cpp3
-rw-r--r--engines/mortevielle/detection_tables.h20
-rw-r--r--engines/mortevielle/menu.cpp16
-rw-r--r--engines/mortevielle/mor.cpp43
-rw-r--r--engines/mortevielle/mor2.cpp32
-rw-r--r--engines/mortevielle/mortevielle.cpp38
-rw-r--r--engines/mortevielle/mortevielle.h25
-rw-r--r--engines/mortevielle/var_mor.cpp11
-rw-r--r--engines/mortevielle/var_mor.h7
10 files changed, 181 insertions, 91 deletions
diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp
index fe0e8f4d89..cd3a7b0df8 100644
--- a/engines/mortevielle/actions.cpp
+++ b/engines/mortevielle/actions.cpp
@@ -42,9 +42,6 @@
namespace Mortevielle {
-/* NIVEAU 4 */
-const char stouinon[] = "[2][ ][OUI][NON]"; //Translation: [2] [ ] [YES] [NO]
-
/* overlay */
void taller() {
//int mx, cx, cy;
@@ -57,7 +54,8 @@ void taller() {
repon(2, s.mlieu);
}
if ((s.mlieu == 15) && (msg[4] == depl[6])) {
- if (! syn) ecr3("aller"); //Translation: Go to
+ if (!syn)
+ ecr3(g_vm->getString(S_GO_TO));
tfleche();
if (iesc) okdes = false;
if ((anyone) || (iesc)) return;
@@ -170,7 +168,8 @@ L2:
}
return;
}
- if (! syn) ecr3("prendre"); //Translation: Take
+ if (!syn)
+ ecr3(g_vm->getString(S_TAKE));
tfleche();
if ((anyone) || (iesc)) return;
if (caff == 3) {
@@ -257,7 +256,8 @@ L2:
{
int cx;
- if (! syn) ecr3("soulever"); //Translation: Lift
+ if (!syn)
+ ecr3(g_vm->getString(S_LIFT));
tfleche();
if ((anyone) || (iesc)) return;
tcoord(3);
@@ -283,11 +283,13 @@ L2:
if (caff > 99) st4(caff);
else {
- if (! syn) ecr3("lire"); //Translation: Read
+ if (!syn)
+ ecr3(g_vm->getString(S_READ));
tfleche();
if (!(anyone) && !(iesc)) {
tcoord(4);
- if (num != 0) crep = 107;
+ if (num != 0)
+ crep = 107;
}
}
}
@@ -304,7 +306,8 @@ L2:
crep = 103;
return;
}
- if (! syn) ecr3("regarder"); //Translation: Look
+ if (!syn)
+ ecr3(g_vm->getString(S_LOOK));
tfleche();
if ((anyone) || (iesc)) return;
tcoord(5);
@@ -365,7 +368,8 @@ L2:
st7(caff);
return;
}
- if (! syn) ecr3("fouiller"); //Translation: Search
+ if (!syn)
+ ecr3(g_vm->getString(S_SEARCH));
tfleche();
if (anyone || iesc) return;
if (s.mlieu == 23) {
@@ -432,7 +436,8 @@ L2:
/* overlay */ void touvrir() {
int cx, haz;
- if (! syn) ecr3("ouvrir"); //Translation: Open
+ if (!syn)
+ ecr3(g_vm->getString(S_OPEN));
if (caff == 26) {
if (ment != 0) {
msg[4] = entrer;
@@ -493,7 +498,8 @@ L2:
crep = 186;
return;
}
- if (! syn) ecr3("mettre"); //Translation: Put
+ if (!syn)
+ ecr3(g_vm->getString(S_PUT));
tfleche();
if (iesc) crep = 998;
if ((anyone) || (iesc)) return;
@@ -523,7 +529,7 @@ L2:
repon(2, 165);
maivid();
parole(6, -9, 1);
- quel = do_alert(stouinon, 1);
+ quel = do_alert(g_vm->getString(S_YES_NO), 1);
if (quel == 1) {
deline(582, st, tay);
i = do_alert(delig, 1);
@@ -592,7 +598,8 @@ L2:
crep = 149;
return;
}
- if (! syn) ecr3("tourner"); //Translation: Turn
+ if (!syn)
+ ecr3(g_vm->getString(S_TURN));
tfleche();
if ((anyone) || (iesc)) return;
tcoord(9);
@@ -601,7 +608,7 @@ L2:
if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) {
repon(2, 167);
parole(7, 9, 1);
- quel = do_alert(stouinon, 1);
+ quel = do_alert(g_vm->getString(S_YES_NO), 1);
if (quel == 1)
g_vm->_endGame = true;
else crep = 168;
@@ -610,7 +617,7 @@ L2:
repon(2, 175);
clsf3();
parole(6, -9, 1);
- quel = do_alert(stouinon, 1);
+ quel = do_alert(g_vm->getString(S_YES_NO), 1);
if (quel == 1) {
s.mlieu = 16;
affrep();
@@ -620,7 +627,8 @@ L2:
}
/* overlay */ void tcacher() {
- if (! syn) ecr3("se cacher"); //Translation: Hide self
+ if (!syn)
+ ecr3(g_vm->getString(S_HIDE_SELF));
tfleche();
if (!(anyone) && !(iesc)) {
tcoord(10);
@@ -635,7 +643,8 @@ L2:
/* overlay */ void tattacher() {
if (s.derobj == 0) crep = 186;
else {
- if (! syn) ecr3("attacher"); //Translation: Tie
+ if (!syn)
+ ecr3(g_vm->getString(S_TIE));
tfleche();
if (!(anyone) && !(iesc)) {
tcoord(8);
@@ -655,7 +664,8 @@ L2:
/* overlay */ void tfermer() {
int cx, chai;
- if (! syn) ecr3("fermer"); //Translation: Close
+ if (!syn)
+ ecr3(g_vm->getString(S_CLOSE));
if (caff < 26) {
tfleche();
if (iesc) crep = 998;
@@ -684,9 +694,10 @@ L2:
/* overlay */ void tfrapper() {
int l, p, haz;
- if (! syn) ecr3("frapper"); //Translation: Hit
+ if (!syn)
+ ecr3(g_vm->getString(S_HIT));
if (s.mlieu == 15) {
- l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); //Translation: [1] [ | Before, use the DEP menu...] [Ok]
+ l = do_alert(g_vm->getString(S_BEFORE_USE_DEP_MENU), 1);
return;
}
if (s.mlieu < 25) {
@@ -716,7 +727,8 @@ L2:
/* overlay */ void tposer() {
int cx, chai;
- if (! syn) ecr3("poser");
+ if (!syn)
+ ecr3(g_vm->getString(S_POSE));
if (s.derobj == 0) crep = 186;
else {
if (caff > 99) {
@@ -884,7 +896,6 @@ L2:
}
/* overlay */ void tdormir() {
- const char m1[] = "D‚sirez-vous vous r‚veiller?"; //Translation: Do you want to wake up?
int z, j, h, m, quel;
if ((s.mlieu > 15) && (s.mlieu < 26)) {
@@ -902,7 +913,7 @@ L2:
clsf3();
clsf2();
ecrf2();
- ecr2(m1);
+ ecr2(g_vm->getString(S_WANT_TO_WAKE_UP));
calch(j, h, m);
do {
if (h < 8) {
@@ -916,7 +927,7 @@ L2:
h = h + 1;
if (h > 23) h = 0;
tinke();
- quel = do_alert(stouinon, 1);
+ quel = do_alert(g_vm->getString(S_YES_NO), 1);
anyone = false;
} while (!(quel == 1));
crep = 998;
@@ -924,7 +935,8 @@ L2:
}
/* overlay */ void tdefoncer() {
- if (! syn) ecr3("d‚foncer"); //Translation: Smash
+ if (!syn)
+ ecr3(g_vm->getString(S_SMASH));
if (caff < 25) tfleche();
if ((! anyone) && (! iesc))
if (s.mlieu != 26) crep = 997;
@@ -977,14 +989,15 @@ L2:
return;
}
repon(2, 102);
- quel = do_alert(stouinon, 1);
+ quel = do_alert(g_vm->getString(S_YES_NO), 1);
} while (!(quel == 2));
crep = 998;
if (! anyone) tinke();
}
/* overlay */ void tsonder() {
- if (! syn) ecr3("sonder"); //Translation: Probe
+ if (!syn)
+ ecr3(g_vm->getString(S_PROBE2));
if (caff < 27) {
tfleche();
if (!(anyone) && (! iesc)) crep = 145;
@@ -1170,7 +1183,8 @@ L2:
/* overlay */ void tsentir() {
crep = 119;
if (caff < 26) {
- if (! syn) ecr3("sentir"); //Translation: Smell
+ if (!syn)
+ ecr3(g_vm->getString(S_SMELL));
tfleche();
if (!(anyone) && !(iesc))
if (caff == 16) crep = 153;
@@ -1181,7 +1195,8 @@ L2:
/* overlay */ void tgratter() {
crep = 155;
if (caff < 27) {
- if (! syn) ecr3("gratter"); //Translation: Scratch
+ if (!syn)
+ ecr3(g_vm->getString(S_SCRATCH));
tfleche();
}
num = 0;
@@ -1242,7 +1257,7 @@ void MortevielleEngine::loseGame() {
heu = 10;
jou = 0;
repon(2, 180);
- quel = do_alert(stouinon, 1);
+ quel = do_alert(g_vm->getString(S_YES_NO), 1);
_quitGame = (quel != 1);
}
diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp
index 35e5cada81..5997b4c349 100644
--- a/engines/mortevielle/detection.cpp
+++ b/engines/mortevielle/detection.cpp
@@ -29,6 +29,9 @@
namespace Mortevielle {
uint32 MortevielleEngine::getGameFlags() const { return _gameDescription->flags; }
+
+Common::Language MortevielleEngine::getLanguage() const { return _gameDescription->language; }
+
}
static const PlainGameDescriptor MortevielleGame[] = {
diff --git a/engines/mortevielle/detection_tables.h b/engines/mortevielle/detection_tables.h
index 7ceb40d524..307d125156 100644
--- a/engines/mortevielle/detection_tables.h
+++ b/engines/mortevielle/detection_tables.h
@@ -23,6 +23,7 @@
namespace Mortevielle {
static const ADGameDescription MortevielleGameDescriptions[] = {
+ // French
{
"mortevielle",
"",
@@ -36,6 +37,8 @@ static const ADGameDescription MortevielleGameDescriptions[] = {
ADGF_NO_FLAGS,
GUIO0()
},
+
+ // German
{
"mortevielle",
"",
@@ -49,6 +52,23 @@ static const ADGameDescription MortevielleGameDescriptions[] = {
ADGF_NO_FLAGS,
GUIO0()
},
+
+ // English. Note that this is technically the French version, but English strings in mort.dat
+ // will automatically replace all the French strings
+ {
+ "mortevielle",
+ "",
+ {
+ {"menufr.mor", 0, "e413f36b9e14eef16130adc347a9391f", 144},
+ {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744},
+ AD_LISTEND
+ },
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ ADGF_NO_FLAGS,
+ GUIO0()
+ },
+
AD_TABLE_END_MARKER
};
diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp
index 9c50777cec..bc74a379e5 100644
--- a/engines/mortevielle/menu.cpp
+++ b/engines/mortevielle/menu.cpp
@@ -214,18 +214,18 @@ void invers(int ix) {
s = dis[lo(msg4)];
break;
case 6 :
- s = fic[lo(msg4)];
+ s = g_vm->getString(S_SAVE_LOAD + lo(msg4));
break;
case 7 :
- s = fic[1];
+ s = g_vm->getString(S_SAVE_LOAD + 1);
s += ' ';
s += (char)(48 + lo(msg4));
break;
case 8 :
if (lo(msg4) == 1) {
- s = recom;
+ s = g_vm->getString(S_RESTART);
} else {
- s = fic[2];
+ s = g_vm->getString(S_SAVE_LOAD + 2);
s += ' ';
s += (char)(47 + lo(msg4));
}
@@ -302,10 +302,10 @@ void menu_down(int ii) {
if (dis[cx][0] != '*') writeg(dis[cx], 4);
break;
case 6 :
- writeg(fic[cx], 4);
+ writeg(g_vm->getString(S_SAVE_LOAD + cx), 4);
break;
case 7 : {
- Common::String s = fic[1];
+ Common::String s = g_vm->getString(S_SAVE_LOAD + 1);
s += ' ';
s += (char)(48 + cx);
writeg(s, 4);
@@ -313,9 +313,9 @@ void menu_down(int ii) {
}
case 8 :
if (cx == 1)
- writeg(recom, 4);
+ writeg(g_vm->getString(S_RESTART), 4);
else {
- Common::String s = fic[2];
+ Common::String s = g_vm->getString(S_SAVE_LOAD + 2);
s += ' ';
s += (char)(47 + cx);
writeg(s, 4);
diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp
index 17dd83a7ee..ae303e99fd 100644
--- a/engines/mortevielle/mor.cpp
+++ b/engines/mortevielle/mor.cpp
@@ -35,6 +35,7 @@
#include "mortevielle/level15.h"
#include "mortevielle/menu.h"
#include "mortevielle/mor.h"
+#include "mortevielle/mortevielle.h"
#include "mortevielle/mouse.h"
#include "mortevielle/outtext.h"
#include "mortevielle/parole2.h"
@@ -43,9 +44,6 @@
namespace Mortevielle {
-/* Niveau 14 suite */
-const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; //Translation: Someone enters, looks surised, but says nothing
-
// For ScummVM, we need to do check for file errors where we do the file access
const int ioresult = 0;
@@ -287,10 +285,14 @@ void clsf10() {
cod = 544;
}
box(15, gd, cod, 93, co, 98, 255);
- if (s.conf < 33) st = "Cool";
- else if (s.conf < 66) st = " Lourde ";
- else if (s.conf > 65) st = "Malsaine";
- if (res == 1) co = 10;
+ if (s.conf < 33)
+ st = g_vm->getString(S_COOL);
+ else if (s.conf < 66)
+ st = g_vm->getString(S_LOURDE);
+ else if (s.conf > 65)
+ st = g_vm->getString(S_MALSAINE);
+ if (res == 1)
+ co = 10;
else co = 6;
co = 574 - ((uint)co * st.size() >> 1);
putxy(co, 92);
@@ -453,9 +455,9 @@ void f3f8() {
if (res == 1) co = 107;
else co = 64;
putxy(3, 44);
- writeg(f3, 5);
+ writeg(g_vm->getString(S_F3), 5);
ywhere = 51;
- writeg(f8, 5);
+ writeg(g_vm->getString(S_F8), 5);
boite(0, 42, co, 16, 7);
}
@@ -610,22 +612,21 @@ void affper(int per) {
if ((h >= 0) && (h < 8)) p = 60;
}
+/**
+ * Shows the you are alone message in the status area on the right hand side of the screen
+ */
void person() {
- const char m1[] = "Vous"; //Translation: You
- const char m2[] = "ˆtes"; //Translation: are
- const char m3[] = "SEUL"; //Translation: ALONE
- int cf;
- Common::String str_;
-
/* debug('person'); */
- for (cf = 1; cf <= 8; cf ++) menu_disable(disc[cf]);
+ for (int cf = 1; cf <= 8; cf ++)
+ menu_disable(disc[cf]);
+
clsf10();
putxy(560, 30);
- writeg(m1, 4);
+ writeg(g_vm->getString(S_YOU), 4);
putxy(560, 50);
- writeg(m2, 4);
+ writeg(g_vm->getString(S_ARE), 4);
putxy(560, 70);
- writeg(m3, 4);
+ writeg(g_vm->getString(S_ALONE), 4);
ipers = 0;
}
@@ -668,7 +669,7 @@ void pendule() {
else writeg("AM ", 1);
putxy(550, 160);
if ((jou >= 0) && (jou <= 8)) {
- Common::String tmp("& jour"); //Translation: Day
+ Common::String tmp = g_vm->getString(S_DAY);
tmp.insertChar((char)(jou + 49), 0);
writeg(tmp, 1);
}
@@ -1208,7 +1209,7 @@ void phaz(int &haz, int &p, int cf) {
if (s.conf > 69) s.conf = s.conf + (s.conf / 10);
clsf3();
ecrf2();
- ecr3(m1);
+ ecr3(g_vm->getString(S_SOMEONE_ENTERS));
haz = (hazard(0, 4)) - 2;
parole(2, haz, 1);
for (haz = 0; haz <= 3000; haz ++);
diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp
index c71c850286..b8b76c1928 100644
--- a/engines/mortevielle/mor2.cpp
+++ b/engines/mortevielle/mor2.cpp
@@ -47,13 +47,12 @@ const int men[12] = { 0,
};
void tinke() {
- const char m1[] = "Mince! Vous entendez du bruit..."; //Translation: Gosh! You hear some noise...
- const char d1[] = " | Vous devriez avoir remarqu‚| "; //Translation: You should have noticed
- const char d2[] = "% des indices..."; //Translation: %s of hints
+ Common::String d1 = g_vm->getString(S_SHOULD_HAVE_NOTICED);
+ Common::String d2 = g_vm->getString(S_NUMBER_OF_HINTS);
const char d3 = '[';
const char d4 = ']';
const char d5 = '1';
- const char d6[] = "OK";
+ Common::String d6 = g_vm->getString(S_OK);
int cx, haz, nh, cf, j, h, m;
Common::String stpo;
bool am;
@@ -78,7 +77,18 @@ void tinke() {
if (cf == 10) stpo = "10";
else stpo = chr(cf + 48);
- stpou = Common::String(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4;
+ stpou = Common::String(d3);
+ stpou += d5;
+ stpou += d4;
+ stpou += d3;
+ stpou += d1;
+ stpou += stpo;
+ stpou += '0';
+ stpou += d2;
+ stpou += d4;
+ stpou += d3;
+ stpou += d6;
+ stpou += d4;
}
if (m > min) {
min = 30;
@@ -149,7 +159,7 @@ void tinke() {
if (haz < 5) {
clsf3();
ecrf2();
- ecr3(m1);
+ ecr3(g_vm->getString(S_HEAR_NOISE));
haz = (hazard(0, 4)) - 2;
parole(1, haz, 1);
clsf3();
@@ -269,8 +279,8 @@ void mfouen()
menu_enable(menup, mettre);
menu_enable(menup, ouvrir);
menu_enable(menup, sortir); */
- menut(sonder, " sonder ");
- menut(soulever, " soulever ");
+ menut(sonder, g_vm->getString(S_PROBE));
+ menut(soulever, g_vm->getString(S_RAISE));
}
void atf3f8(int &key) {
@@ -427,8 +437,8 @@ void mfoudi() {
menu_disable(menup, mettre);
menu_disable(menup, ouvrir);
menu_disable(menup, sortir); */
- menut(sonder, " -SUITE- ");
- menut(soulever, " -STOP- ");
+ menut(sonder, g_vm->getString(S_SUITE));
+ menut(soulever, g_vm->getString(S_STOP));
}
void mennor() {
@@ -774,7 +784,7 @@ void st13(int ob) {
void aldepl() {
int dummy;
- dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); //Translation: [1] [So, use the DEP menu] [Ok]
+ dummy = do_alert(g_vm->getString(S_USE_DEP_MENU), 1);
}
} // End of namespace Mortevielle
diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp
index eed4b5156b..1fc20cfbae 100644
--- a/engines/mortevielle/mortevielle.cpp
+++ b/engines/mortevielle/mortevielle.cpp
@@ -204,16 +204,51 @@ Common::ErrorCode MortevielleEngine::loadMortDat() {
if (!strncmp(dataType, "FONT", 4)) {
// Font resource
_screenSurface.readFontData(f, dataSize);
+ } else if (!strncmp(dataType, "SSTR", 4)) {
+ readStaticStrings(f, dataSize);
} else {
// Unknown section
f.skip(dataSize);
}
}
+ // Close the file
f.close();
+
+ assert(_staticStrings.size() > 0);
return Common::kNoError;
}
+/**
+ * Read in a static strings block, and if the language matches, load up the static strings
+ */
+void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize) {
+ // Figure out what language Id is needed
+ byte desiredLanguageId = (getLanguage() == Common::EN_ANY) ? LANG_ENGLISH : LANG_FRENCH;
+
+ // Read in the language
+ byte languageId = f.readByte();
+ --dataSize;
+
+ // If the language isn't correct, then skip the entire block
+ if (languageId != desiredLanguageId) {
+ f.skip(dataSize);
+ return;
+ }
+
+ // Load in each of the strings
+ while (dataSize > 0) {
+ Common::String s;
+ char ch;
+ while ((ch = (char)f.readByte()) != '\0')
+ s += ch;
+
+ _staticStrings.push_back(s);
+ dataSize -= s.size() + 1;
+ }
+ assert(dataSize == 0);
+}
+
bool MortevielleEngine::keyPressed() {
// Check for any pending key presses
handleEvents();
@@ -510,7 +545,6 @@ void MortevielleEngine::playGame() {
* @remarks Originally called tecran
*/
void MortevielleEngine::handleAction() {
- const char idem[] = "Idem";
const int lim = 20000;
int temps = 0;
char inkey = '\0';
@@ -555,7 +589,7 @@ void MortevielleEngine::handleAction() {
} else if (inkey == '\77') {
if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) {
msg[4] = mnumo;
- ecr3(idem);
+ ecr3(g_vm->getString(S_IDEM));
} else return;
} else if (inkey == '\104') {
if ((x != 0) && (y != 0)) num = 9999;
diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h
index 9ca8258b8d..94640ba8a9 100644
--- a/engines/mortevielle/mortevielle.h
+++ b/engines/mortevielle/mortevielle.h
@@ -38,11 +38,32 @@
namespace Mortevielle {
+// Debug channels
enum {
kMortevielleCore = 1 << 0,
kMortevielleGraphics = 1 << 1
};
+// Game languages
+enum {
+ LANG_FRENCH = 0,
+ LANG_ENGLISH = 1
+};
+
+// Static string list
+enum {
+ S_YES_NO = 0, S_GO_TO = 1, S_SOMEONE_ENTERS = 2, S_COOL = 3, S_LOURDE = 4,
+ S_MALSAINE = 5, S_IDEM = 6, S_YOU = 7, S_ARE = 8, S_ALONE = 9,
+ S_HEAR_NOISE = 10, S_SHOULD_HAVE_NOTICED = 11, S_NUMBER_OF_HINTS = 12,
+ S_WANT_TO_WAKE_UP = 13, S_OK = 14, S_SAVE_LOAD = 15, S_RESTART = 18, S_F3 = 19,
+ S_F8 = 20, S_HIDE_SELF = 21, S_TAKE = 22, S_PROBE = 23, S_RAISE = 24, S_SUITE = 25,
+ S_STOP = 26, S_USE_DEP_MENU = 27, S_LIFT = 28, S_READ = 29,
+ S_LOOK = 30, S_SEARCH = 31, S_OPEN = 32, S_PUT = 33, S_TURN = 34, S_TIE = 35, S_CLOSE = 36,
+ S_HIT = 37, S_POSE = 38, S_SMASH = 39,
+
+ S_SMELL = 40, S_SCRATCH = 41, S_PROBE2 = 42, S_BEFORE_USE_DEP_MENU = 43, S_DAY = 44
+};
+
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 400
#define SCREEN_ORIG_HEIGHT 200
@@ -58,9 +79,11 @@ private:
bool _mouseClick;
Common::Point _mousePos;
bool _inMainGameLoop; // Flag when the main game loop is active
+ Common::StringArray _staticStrings;
Common::ErrorCode initialise();
Common::ErrorCode loadMortDat();
+ void readStaticStrings(Common::File &f, int dataSize);
void loadFont(Common::File &f);
bool handleEvents();
void addKeypress(Common::Event &evt);
@@ -91,6 +114,7 @@ public:
virtual Common::Error saveGameState(int slot, const Common::String &desc);
virtual Common::Error run();
uint32 getGameFlags() const;
+ Common::Language getLanguage() const;
bool keyPressed();
int getChar();
@@ -99,6 +123,7 @@ public:
bool getMouseClick() const { return _mouseClick; }
void setMouseClick(bool v) { _mouseClick = v; }
void delay(int amount);
+ Common::String getString(int idx) const { return _staticStrings[idx]; }
void endGame();
void loseGame();
diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp
index 5ace0614bb..cd84b934a1 100644
--- a/engines/mortevielle/var_mor.cpp
+++ b/engines/mortevielle/var_mor.cpp
@@ -72,19 +72,8 @@ const byte don[9][5] = {
{0, 62, 25, 13, 5}
};
-const char *fic[3] = {
- "",
- " Sauvegarde", // Translation: "Save"
- " Chargement" // Translation: "Load"
-};
-
const byte addv[2] = {8, 8};
-const char recom[] = " Recommence "; // Translation: "Restart"
-
-const char f3[] = "F3: Encore"; // Translation: "F3: More"
-const char f8[] = "F8: Suite"; // Translation: "F8: Next"
-
const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0};
/*---------------------------------------------------------------------------*/
diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h
index eea89947b4..2e2bf539f2 100644
--- a/engines/mortevielle/var_mor.h
+++ b/engines/mortevielle/var_mor.h
@@ -176,15 +176,8 @@ extern const byte tnocon[364];
extern const byte don[9][5];
-extern const char *fic[3];
-
extern const byte addv[2];
-extern const char recom[];
-
-extern const char f3[];
-extern const char f8[];
-
extern const byte rang[16];
/*---------------------------------------------------------------------------*/