aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2015-06-14 17:52:11 +0200
committerMartin Kiewitz2015-06-14 17:52:11 +0200
commit1b6a60f359eb20130f34a8f79bfe9e5d4ea25b5a (patch)
tree760c80f31b1013d9a58a5d8445e04e766dd0fb18 /engines
parentb26bc296194c3a745fa9d222862ce1ad12a13e3e (diff)
downloadscummvm-rg350-1b6a60f359eb20130f34a8f79bfe9e5d4ea25b5a.tar.gz
scummvm-rg350-1b6a60f359eb20130f34a8f79bfe9e5d4ea25b5a.tar.bz2
scummvm-rg350-1b6a60f359eb20130f34a8f79bfe9e5d4ea25b5a.zip
SHERLOCK: action processing uses fixed text class
action error messages are now localized too
Diffstat (limited to 'engines')
-rw-r--r--engines/sherlock/fixed_text.cpp182
-rw-r--r--engines/sherlock/fixed_text.h21
-rw-r--r--engines/sherlock/objects.cpp18
-rw-r--r--engines/sherlock/objects.h7
-rw-r--r--engines/sherlock/scalpel/scalpel_user_interface.cpp43
-rw-r--r--engines/sherlock/scalpel/scalpel_user_interface.h2
-rw-r--r--engines/sherlock/user_interface.cpp12
-rw-r--r--engines/sherlock/user_interface.h3
8 files changed, 229 insertions, 59 deletions
diff --git a/engines/sherlock/fixed_text.cpp b/engines/sherlock/fixed_text.cpp
index 48e778bcf8..2d6c963fdd 100644
--- a/engines/sherlock/fixed_text.cpp
+++ b/engines/sherlock/fixed_text.cpp
@@ -85,10 +85,12 @@ static const Common::String fixedTextDE[] = {
// Journal search
"Zur\201ck",
"R\201ckw\204rts", // original: "Backward"
- "V\224rw\204rts", // original: "Forward"
+ "Vorw\204rts", // original: "Forward"
"Text nicht gefunden!"
};
-
+
+// up-side down exclamation mark - 0xAD / octal 255
+// up-side down question mark - 0xA8 / octal 250
static const Common::String fixedTextES[] = {
// Window buttons
"Exit",
@@ -119,31 +121,191 @@ static const Common::String fixedTextES[] = {
"Texto no encontrado!"
};
-static const SherlockFixedTextLanguageEntry fixedTextLanguages[] = {
- { Common::DE_DEU, fixedTextDE },
- { Common::ES_ESP, fixedTextES },
- { Common::EN_ANY, fixedTextEN },
- { Common::UNK_LANG, fixedTextEN }
+// =========================================
+
+static const Common::String fixedTextEN_ActionOpen[] = {
+ "This cannot be opened",
+ "It is already open",
+ "It is locked",
+ "Wait for Watson",
+ " ",
+ "."
+};
+
+static const Common::String fixedTextDE_ActionOpen[] = {
+ "Das kann man nicht \224ffnen",
+ "Ist doch schon offen!",
+ "Leider verschlossen",
+ "Warte auf Watson",
+ " ",
+ "."
+};
+
+static const Common::String fixedTextES_ActionOpen[] = {
+ "No puede ser abierto",
+ "Ya esta abierto",
+ "Esta cerrado",
+ "Espera a Watson",
+ " ",
+ "."
+};
+
+static const Common::String fixedTextEN_ActionClose[] = {
+ "This cannot be closed",
+ "It is already closed",
+ "The safe door is in the way"
+};
+
+static const Common::String fixedTextDE_ActionClose[] = {
+ "Das kann man nicht schlie\341en",
+ "Ist doch schon zu!",
+ "Die safet\201r ist Weg"
+};
+
+static const Common::String fixedTextES_ActionClose[] = {
+ "No puede ser cerrado",
+ "Ya esta cerrado",
+ "La puerta de seguridad esta entre medias"
+};
+
+static const Common::String fixedTextEN_ActionMove[] = {
+ "This cannot be moved",
+ "It is bolted to the floor",
+ "It is too heavy",
+ "The other crate is in the way"
+};
+
+
+static const Common::String fixedTextDE_ActionMove[] = {
+ "L\204\341t sich nicht bewegen",
+ "Festged\201belt in der Erde...",
+ "Oha, VIEL zu schwer",
+ "Der andere Kiste ist im Weg" // [sic]
+};
+
+static const Common::String fixedTextES_ActionMove[] = {
+ "No puede moverse",
+ "Esta sujeto a la pared",
+ "Es demasiado pesado",
+ "El otro cajon esta en mitad"
+};
+
+static const Common::String fixedTextEN_ActionPick[] = {
+ "Nothing of interest here",
+ "It is bolted down",
+ "It is too big to carry",
+ "It is too heavy",
+ "I think a girl would be more your type",
+ "Those flowers belong to Penny",
+ "She's far too young for you!",
+ "I think a girl would be more your type!",
+ "Government property for official use only"
};
+static const Common::String fixedTextDE_ActionPick[] = {
+ "Nichts Interessantes da",
+ "Zu gut befestigt",
+ "Ist ja wohl ein bi\341chen zu gro\341, oder ?",
+ "Ich denke, Du stehst mehr auf M\204dchen ?",
+ "Diese Blumen geh\224ren Penny",
+ "Sie ist doch viel zu jung f\201r Dich!",
+ "Staatseigentum - Nur für den Dienstgebrauch !"
+};
+
+static const Common::String fixedTextES_ActionPick[] = {
+ "No hay nada interesante",
+ "Esta anclado al suelo",
+ "Es muy grande para llevarlo",
+ "Pesa demasiado",
+ "Creo que una chica sera mas tu tipo",
+ "Esas flores pertenecen a Penny",
+ "\255Es demasiado joven para ti!"
+ "\255Creo que una chica sera mas tu tipo!",
+ "Propiedad del gobierno para uso oficial"
+};
+
+static const Common::String fixedTextEN_ActionUse[] = {
+ "You can't do that",
+ "It had no effect",
+ "You can't reach it",
+ "OK, the door looks bigger! Happy?"
+ "Doors don't smoke"
+};
+
+static const Common::String fixedTextDE_ActionUse[] = {
+ "Nein, das geht wirklich nicht",
+ "Tja keinerlei Wirkung",
+ "Da kommst du nicht dran",
+ "Na gut, die Tür sieht jetzt gr\224\341er aus. Zufrieden?"
+ "Türen sind Nichtraucher!"
+};
+
+static const Common::String fixedTextES_ActionUse[] = {
+ "No puedes hacerlo",
+ "No tuvo ningun efecto",
+ "No puedes alcanzarlo",
+ "Bien, \255es enorme! \250Feliz?"
+ "Las puertas no fuman"
+};
+
+static const FixedTextActionEntry fixedTextEN_Actions[] = {
+ { fixedTextEN_ActionOpen },
+ { fixedTextEN_ActionClose },
+ { fixedTextEN_ActionMove },
+ { fixedTextEN_ActionPick },
+ { fixedTextEN_ActionUse }
+};
+
+static const FixedTextActionEntry fixedTextDE_Actions[] = {
+ { fixedTextDE_ActionOpen },
+ { fixedTextDE_ActionClose },
+ { fixedTextDE_ActionMove },
+ { fixedTextDE_ActionPick },
+ { fixedTextDE_ActionUse }
+};
+
+static const FixedTextActionEntry fixedTextES_Actions[] = {
+ { fixedTextES_ActionOpen },
+ { fixedTextES_ActionClose },
+ { fixedTextES_ActionMove },
+ { fixedTextES_ActionPick },
+ { fixedTextES_ActionUse }
+};
+
+// =========================================
+
+static const FixedTextLanguageEntry fixedTextLanguages[] = {
+ { Common::DE_DEU, fixedTextDE, fixedTextDE_Actions },
+ { Common::ES_ESP, fixedTextES, fixedTextES_Actions },
+ { Common::EN_ANY, fixedTextEN, fixedTextEN_Actions },
+ { Common::UNK_LANG, fixedTextEN, fixedTextEN_Actions }
+};
+
+// =========================================
+
+// =========================================
FixedText::FixedText(SherlockEngine *vm) : _vm(vm) {
// Figure out which fixed texts to use
Common::Language curLanguage = _vm->getLanguage();
- const SherlockFixedTextLanguageEntry *curLanguageEntry = fixedTextLanguages;
+ const FixedTextLanguageEntry *curLanguageEntry = fixedTextLanguages;
while (curLanguageEntry->language != Common::UNK_LANG) {
if (curLanguageEntry->language == curLanguage)
break; // found current language
curLanguageEntry++;
}
- _fixedText = curLanguageEntry->fixedTextArray;
+ _curLanguageEntry = curLanguageEntry;
}
const Common::String FixedText::getText(FixedTextId fixedTextId) {
- return _fixedText[fixedTextId];
+ return _curLanguageEntry->fixedTextArray[fixedTextId];
}
+const Common::String FixedText::getActionMessage(FixedTextActionId actionId, int messageIndex) {
+ assert(actionId >= 0);
+ return _curLanguageEntry->actionArray[actionId].fixedTextArray[messageIndex];
+}
} // End of namespace Sherlock
diff --git a/engines/sherlock/fixed_text.h b/engines/sherlock/fixed_text.h
index db092bb72a..7c4a7a877b 100644
--- a/engines/sherlock/fixed_text.h
+++ b/engines/sherlock/fixed_text.h
@@ -24,6 +24,7 @@
#define SHERLOCK_FIXED_TEXT_H
#include "common/scummsys.h"
+#include "common/language.h"
namespace Sherlock {
@@ -57,16 +58,30 @@ enum FixedTextId {
kFixedText_JournalSearch_NotFound
};
-struct SherlockFixedTextLanguageEntry {
+enum FixedTextActionId {
+ kFixedTextAction_Invalid = -1,
+ kFixedTextAction_Open = 0,
+ kFixedTextAction_Close,
+ kFixedTextAction_Move,
+ kFixedTextAction_Pick,
+ kFixedTextAction_Use
+};
+
+struct FixedTextActionEntry {
+ const Common::String *fixedTextArray;
+};
+
+struct FixedTextLanguageEntry {
Common::Language language;
const Common::String *fixedTextArray;
+ const FixedTextActionEntry *actionArray;
};
class FixedText {
private:
SherlockEngine *_vm;
- const Common::String *_fixedText;
+ const FixedTextLanguageEntry *_curLanguageEntry;
public:
FixedText(SherlockEngine *vm);
@@ -76,6 +91,8 @@ public:
* Gets hardcoded text
*/
const Common::String getText(FixedTextId fixedTextId);
+
+ const Common::String getActionMessage(FixedTextActionId actionId, int messageIndex);
};
} // End of namespace Sherlock
diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp
index 0d330370e7..21ab01dea3 100644
--- a/engines/sherlock/objects.cpp
+++ b/engines/sherlock/objects.cpp
@@ -348,7 +348,7 @@ void BaseObject::checkObject() {
} else if (v < USE_COUNT) {
for (int idx = 0; idx < NAMES_COUNT; ++idx) {
- checkNameForCodes(_use[v]._names[idx], nullptr);
+ checkNameForCodes(_use[v]._names[idx]);
}
if (_use[v]._useFlag)
@@ -488,7 +488,8 @@ void BaseObject::setObjSequence(int seq, bool wait) {
}
}
-int BaseObject::checkNameForCodes(const Common::String &name, const char *const messages[]) {
+int BaseObject::checkNameForCodes(const Common::String &name, FixedTextActionId fixedTextActionId) {
+ FixedText &fixedText = *_vm->_fixedText;
People &people = *_vm->_people;
Scene &scene = *_vm->_scene;
Screen &screen = *_vm->_screen;
@@ -571,7 +572,8 @@ int BaseObject::checkNameForCodes(const Common::String &name, const char *const
int messageNum = atoi(name.c_str() + 1);
ui._infoFlag = true;
ui.clearInfo();
- screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "%s", messages[messageNum]);
+ Common::String errorMessage = fixedText.getActionMessage(fixedTextActionId, messageNum);
+ screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, errorMessage.c_str());
ui._menuCounter = 25;
} else if (name.hasPrefix("@")) {
// Message attached to canimation
@@ -1413,7 +1415,8 @@ void Object::adjustObject() {
}
}
-int Object::pickUpObject(const char *const messages[]) {
+int Object::pickUpObject(FixedTextActionId fixedTextActionId) {
+ FixedText &fixedText = *_vm->_fixedText;
Inventory &inv = *_vm->_inventory;
People &people = *_vm->_people;
Scene &scene = *_vm->_scene;
@@ -1426,7 +1429,7 @@ int Object::pickUpObject(const char *const messages[]) {
if (pickup == 99) {
for (int idx = 0; idx < NAMES_COUNT && !talk._talkToAbort; ++idx) {
- if (checkNameForCodes(_use[0]._names[idx], nullptr)) {
+ if (checkNameForCodes(_use[0]._names[idx], kFixedTextAction_Invalid)) {
if (!talk._talkToAbort)
printed = true;
}
@@ -1442,7 +1445,8 @@ int Object::pickUpObject(const char *const messages[]) {
ui._infoFlag = true;
ui.clearInfo();
- screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "%s", messages[message]);
+ Common::String errorMessage = fixedText.getActionMessage(fixedTextActionId, message);
+ screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, errorMessage.c_str());
ui._menuCounter = 30;
} else {
// Pick it up
@@ -1473,7 +1477,7 @@ int Object::pickUpObject(const char *const messages[]) {
}
for (int idx = 0; idx < NAMES_COUNT && !talk._talkToAbort; ++idx) {
- if (checkNameForCodes(_use[0]._names[idx], nullptr)) {
+ if (checkNameForCodes(_use[0]._names[idx], kFixedTextAction_Invalid)) {
if (!talk._talkToAbort)
printed = true;
}
diff --git a/engines/sherlock/objects.h b/engines/sherlock/objects.h
index 35129304e1..4f22e75dbf 100644
--- a/engines/sherlock/objects.h
+++ b/engines/sherlock/objects.h
@@ -28,6 +28,7 @@
#include "common/str-array.h"
#include "common/str.h"
#include "sherlock/image_file.h"
+#include "sherlock/fixed_text.h"
namespace Sherlock {
@@ -248,7 +249,7 @@ public:
* @param messages Provides a lookup list of messages that can be printed
* @returns 0 if no codes are found, 1 if codes were found
*/
- int checkNameForCodes(const Common::String &name, const char *const messages[]);
+ int checkNameForCodes(const Common::String &name, FixedTextActionId fixedTextActionId = kFixedTextAction_Invalid);
/**
* Adjusts the frame and sequence variables of a sprite that corresponds to the current speaker
@@ -400,13 +401,13 @@ public:
* Handles trying to pick up an object. If allowed, plays an y necessary animation for picking
* up the item, and then adds it to the player's inventory
*/
- int pickUpObject(const char *const messages[]);
+ int pickUpObject(FixedTextActionId fixedTextActionId = kFixedTextAction_Invalid);
/**
* Return the frame width
*/
int frameWidth() const { return _imageFrame ? _imageFrame->_frame.w : 0; }
-
+
/**
* Return the frame height
*/
diff --git a/engines/sherlock/scalpel/scalpel_user_interface.cpp b/engines/sherlock/scalpel/scalpel_user_interface.cpp
index e0e7f3362b..72f40a7d26 100644
--- a/engines/sherlock/scalpel/scalpel_user_interface.cpp
+++ b/engines/sherlock/scalpel/scalpel_user_interface.cpp
@@ -62,25 +62,6 @@ const char INVENTORY_COMMANDS[9] = { "ELUG-+,." };
const char *const PRESS_KEY_FOR_MORE = "Press any Key for More.";
const char *const PRESS_KEY_TO_CONTINUE = "Press any Key to Continue.";
-const char *const MOPEN[] = {
- "This cannot be opened", "It is already open", "It is locked", "Wait for Watson", " ", "."
-};
-const char *const MCLOSE[] = {
- "This cannot be closed", "It is already closed", "The safe door is in the way"
-};
-const char *const MMOVE[] = {
- "This cannot be moved", "It is bolted to the floor", "It is too heavy", "The other crate is in the way"
-};
-const char *const MPICK[] = {
- "Nothing of interest here", "It is bolted down", "It is too big to carry", "It is too heavy",
- "I think a girl would be more your type", "Those flowers belong to Penny", "She's far too young for you!",
- "I think a girl would be more your type!", "Government property for official use only"
-};
-const char *const MUSE[] = {
- "You can't do that", "It had no effect", "You can't reach it", "OK, the door looks bigger! Happy?",
- "Doors don't smoke"
-};
-
/*----------------------------------------------------------------*/
@@ -1196,10 +1177,10 @@ void ScalpelUserInterface::doInvControl() {
bool giveFl = (tempMode >= INVMODE_GIVE);
if (_selector >= 0)
// Use/Give inv object with scene object
- checkUseAction(&scene._bgShapes[_find]._use[0], inv[_selector]._name, MUSE, _find, giveFl);
+ checkUseAction(&scene._bgShapes[_find]._use[0], inv[_selector]._name, kFixedTextAction_Use, _find, giveFl);
else
// Now inv object has been highlighted
- checkUseAction(&scene._bgShapes[_find]._use[0], "*SELF*", MUSE, _find, giveFl);
+ checkUseAction(&scene._bgShapes[_find]._use[0], "*SELF*", kFixedTextAction_Use, _find, giveFl);
_selector = _oldSelector = -1;
}
@@ -1422,7 +1403,7 @@ void ScalpelUserInterface::doMiscControl(int allowed) {
switch (allowed) {
case ALLOW_OPEN:
- checkAction(obj._aOpen, _temp, MOPEN);
+ checkAction(obj._aOpen, _temp, kFixedTextAction_Open);
if (_menuMode != TALK_MODE && !talk._talkToAbort) {
_menuMode = STD_MODE;
restoreButton(OPEN_MODE - 1);
@@ -1431,7 +1412,7 @@ void ScalpelUserInterface::doMiscControl(int allowed) {
break;
case ALLOW_CLOSE:
- checkAction(obj._aClose, _temp, MCLOSE);
+ checkAction(obj._aClose, _temp, kFixedTextAction_Close);
if (_menuMode != TALK_MODE && !talk._talkToAbort) {
_menuMode = STD_MODE;
restoreButton(CLOSE_MODE - 1);
@@ -1440,7 +1421,7 @@ void ScalpelUserInterface::doMiscControl(int allowed) {
break;
case ALLOW_MOVE:
- checkAction(obj._aMove, _temp, MMOVE);
+ checkAction(obj._aMove, _temp, kFixedTextAction_Move);
if (_menuMode != TALK_MODE && !talk._talkToAbort) {
_menuMode = STD_MODE;
restoreButton(MOVE_MODE - 1);
@@ -1467,7 +1448,7 @@ void ScalpelUserInterface::doPickControl() {
// Don't allow characters to be picked up
if (_bgFound < 1000) {
- scene._bgShapes[_bgFound].pickUpObject(MPICK);
+ scene._bgShapes[_bgFound].pickUpObject(kFixedTextAction_Pick);
if (!talk._talkToAbort && _menuMode != TALK_MODE) {
_key = _oldKey = -1;
@@ -2082,13 +2063,14 @@ void ScalpelUserInterface::banishWindow(bool slideUp) {
}
void ScalpelUserInterface::checkUseAction(const UseType *use, const Common::String &invName,
- const char *const messages[], int objNum, bool giveMode) {
+ FixedTextActionId fixedTextActionId, int objNum, bool giveMode) {
Events &events = *_vm->_events;
+ FixedText &fixedText = *_vm->_fixedText;
Inventory &inv = *_vm->_inventory;
Scene &scene = *_vm->_scene;
Screen &screen = *_vm->_screen;
Talk &talk = *_vm->_talk;
- bool printed = messages == nullptr;
+ bool printed = fixedTextActionId == kFixedTextAction_Invalid;
if (objNum >= 1000) {
// Holmes was specified, so do nothing
@@ -2140,7 +2122,7 @@ void ScalpelUserInterface::checkUseAction(const UseType *use, const Common::Stri
if (!talk._talkToAbort) {
Object &obj = scene._bgShapes[objNum];
for (int idx = 0; idx < NAMES_COUNT && !talk._talkToAbort; ++idx) {
- if (obj.checkNameForCodes(action._names[idx], messages)) {
+ if (obj.checkNameForCodes(action._names[idx], fixedTextActionId)) {
if (!talk._talkToAbort)
printed = true;
}
@@ -2161,10 +2143,11 @@ void ScalpelUserInterface::checkUseAction(const UseType *use, const Common::Stri
if (giveMode) {
screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "No, thank you.");
- } else if (messages == nullptr) {
+ } else if (fixedTextActionId == kFixedTextAction_Invalid) {
screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "You can't do that.");
} else {
- screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "%s", messages[0]);
+ Common::String errorMessage = fixedText.getActionMessage(fixedTextActionId, 0);
+ screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, errorMessage.c_str());
}
_infoFlag = true;
diff --git a/engines/sherlock/scalpel/scalpel_user_interface.h b/engines/sherlock/scalpel/scalpel_user_interface.h
index 2c93279415..605bf48eca 100644
--- a/engines/sherlock/scalpel/scalpel_user_interface.h
+++ b/engines/sherlock/scalpel/scalpel_user_interface.h
@@ -136,7 +136,7 @@ private:
/**
* Checks to see whether a USE action is valid on the given object
*/
- void checkUseAction(const UseType *use, const Common::String &invName, const char *const messages[],
+ void checkUseAction(const UseType *use, const Common::String &invName, FixedTextActionId fixedTextActionId,
int objNum, bool giveMode);
/**
diff --git a/engines/sherlock/user_interface.cpp b/engines/sherlock/user_interface.cpp
index ba94d53aae..af79b34561 100644
--- a/engines/sherlock/user_interface.cpp
+++ b/engines/sherlock/user_interface.cpp
@@ -54,8 +54,9 @@ UserInterface::UserInterface(SherlockEngine *vm) : _vm(vm) {
}
-void UserInterface::checkAction(ActionType &action, int objNum, const char *const messages[]) {
+void UserInterface::checkAction(ActionType &action, int objNum, FixedTextActionId fixedTextActionId) {
Events &events = *_vm->_events;
+ FixedText &fixedText = *_vm->_fixedText;
People &people = *_vm->_people;
Scene &scene = *_vm->_scene;
Screen &screen = *_vm->_screen;
@@ -70,7 +71,8 @@ void UserInterface::checkAction(ActionType &action, int objNum, const char *cons
// Invalid action, to print error message
_infoFlag = true;
clearInfo();
- screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "%s", messages[action._cAnimNum]);
+ Common::String errorMessage = fixedText.getActionMessage(fixedTextActionId, action._cAnimNum);
+ screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, errorMessage.c_str());
_infoFlag = true;
// Set how long to show the message
@@ -111,7 +113,7 @@ void UserInterface::checkAction(ActionType &action, int objNum, const char *cons
for (int nameIdx = 0; nameIdx < NAMES_COUNT; ++nameIdx) {
if (action._names[nameIdx].hasPrefix("*") && action._names[nameIdx].size() >= 2
&& toupper(action._names[nameIdx][1]) == 'W') {
- if (obj.checkNameForCodes(Common::String(action._names[nameIdx].c_str() + 2), messages)) {
+ if (obj.checkNameForCodes(Common::String(action._names[nameIdx].c_str() + 2), fixedTextActionId)) {
if (!talk._talkToAbort)
printed = true;
}
@@ -152,7 +154,7 @@ void UserInterface::checkAction(ActionType &action, int objNum, const char *cons
for (int nameIdx = 0; nameIdx < NAMES_COUNT; ++nameIdx) {
if (action._names[nameIdx].hasPrefix("*") && action._names[nameIdx].size() >= 2
&& toupper(action._names[nameIdx][1]) == 'F') {
- if (obj.checkNameForCodes(action._names[nameIdx].c_str() + 2, messages)) {
+ if (obj.checkNameForCodes(action._names[nameIdx].c_str() + 2, fixedTextActionId)) {
if (!talk._talkToAbort)
printed = true;
}
@@ -164,7 +166,7 @@ void UserInterface::checkAction(ActionType &action, int objNum, const char *cons
if (!talk._talkToAbort) {
for (int nameIdx = 0; nameIdx < NAMES_COUNT && !talk._talkToAbort; ++nameIdx) {
- if (obj.checkNameForCodes(action._names[nameIdx], messages)) {
+ if (obj.checkNameForCodes(action._names[nameIdx], fixedTextActionId)) {
if (!talk._talkToAbort)
printed = true;
}
diff --git a/engines/sherlock/user_interface.h b/engines/sherlock/user_interface.h
index 1692ff7bc2..541b632f2c 100644
--- a/engines/sherlock/user_interface.h
+++ b/engines/sherlock/user_interface.h
@@ -28,6 +28,7 @@
#include "sherlock/surface.h"
#include "sherlock/objects.h"
#include "sherlock/resources.h"
+#include "sherlock/fixed_text.h"
namespace Sherlock {
@@ -64,7 +65,7 @@ protected:
/**
* Called for OPEN, CLOSE, and MOVE actions are being done
*/
- void checkAction(ActionType &action, int objNum, const char *const messages[] = nullptr);
+ void checkAction(ActionType &action, int objNum, FixedTextActionId fixedTextActionId = kFixedTextAction_Invalid);
public:
MenuMode _menuMode;
int _menuCounter;