aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2010-01-08 17:25:39 +0000
committerMartin Kiewitz2010-01-08 17:25:39 +0000
commitc067bf053d994f6c7dd8ab7d2658d8a46aea3cb9 (patch)
treedbc56d5fb081856cd1bb024ce0b1d7bc6558a0a1 /engines
parentb5603ee8227c0ea20cb3810748be8c65a3d5c4c7 (diff)
downloadscummvm-rg350-c067bf053d994f6c7dd8ab7d2658d8a46aea3cb9.tar.gz
scummvm-rg350-c067bf053d994f6c7dd8ab7d2658d8a46aea3cb9.tar.bz2
scummvm-rg350-c067bf053d994f6c7dd8ab7d2658d8a46aea3cb9.zip
SCI: support "Ctrl-" prefix keys in menu, makes Ctrl-keys work in lsl6
svn-id: r47164
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/menu.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/sci/graphics/menu.cpp b/engines/sci/graphics/menu.cpp
index bbb3765817..162b245119 100644
--- a/engines/sci/graphics/menu.cpp
+++ b/engines/sci/graphics/menu.cpp
@@ -66,6 +66,7 @@ void Menu::add(Common::String title, Common::String content, reg_t contentVmPtr)
int separatorCount;
int curPos, beginPos, endPos, tempPos;
int tagPos, rightAlignedPos, functionPos, altPos, controlPos;
+ const char *tempPtr;
// Sierra SCI starts with id 1, so we do so as well
_listCount++;
@@ -180,6 +181,14 @@ void Menu::add(Common::String title, Common::String content, reg_t contentVmPtr)
} else {
EngineState *s = ((SciEngine *)g_engine)->getEngineState(); // HACK: needed for strSplit()
itemEntry->text = s->strSplit(Common::String(content.c_str() + beginPos, tempPos - beginPos).c_str());
+
+ // LSL6 uses "Ctrl-" prefix string instead of ^ like all the other games do
+ tempPtr = itemEntry->text.c_str();
+ tempPtr = strstr(tempPtr, "Ctrl-");
+ if (tempPtr) {
+ itemEntry->keyModifier = SCI_KEYMOD_CTRL;
+ itemEntry->keyPress = tolower(tempPtr[5]);
+ }
}
itemEntry->textVmPtr = contentVmPtr;
itemEntry->textVmPtr.offset += beginPos;
@@ -193,10 +202,11 @@ void Menu::add(Common::String title, Common::String content, reg_t contentVmPtr)
tempPos = tagPos;
itemEntry->textRightAligned = Common::String(content.c_str() + rightAlignedPos, tempPos - rightAlignedPos);
// - and + are used sometimes for volume control
- if (itemEntry->textRightAligned == "-")
+ if (itemEntry->textRightAligned == "-") {
itemEntry->keyPress = '-';
- if (itemEntry->textRightAligned == "+")
+ } else if (itemEntry->textRightAligned == "+") {
itemEntry->keyPress = '+';
+ }
}
if (tagPos) {