aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scalpel/settings.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2016-01-30 14:03:38 +0100
committerMartin Kiewitz2016-01-30 14:04:18 +0100
commitdc3c3a84fde54058a3b9a379e96862104adadcc6 (patch)
tree23ac4ab9dfe8358af1d11e24ee26aced46276239 /engines/sherlock/scalpel/settings.cpp
parent42f327e5fddaf73546e14fd9dee7f68b0f7b5619 (diff)
downloadscummvm-rg350-dc3c3a84fde54058a3b9a379e96862104adadcc6.tar.gz
scummvm-rg350-dc3c3a84fde54058a3b9a379e96862104adadcc6.tar.bz2
scummvm-rg350-dc3c3a84fde54058a3b9a379e96862104adadcc6.zip
SHERLOCK: SS: make settings multilingual
Also make it possible to somewhat easily have hotkeys within the button text itself and not just having to use the very first button text character as hotkey.
Diffstat (limited to 'engines/sherlock/scalpel/settings.cpp')
-rw-r--r--engines/sherlock/scalpel/settings.cpp249
1 files changed, 164 insertions, 85 deletions
diff --git a/engines/sherlock/scalpel/settings.cpp b/engines/sherlock/scalpel/settings.cpp
index f6769a4b99..855bb401a0 100644
--- a/engines/sherlock/scalpel/settings.cpp
+++ b/engines/sherlock/scalpel/settings.cpp
@@ -24,6 +24,7 @@
#include "sherlock/scalpel/settings.h"
#include "sherlock/scalpel/scalpel_screen.h"
#include "sherlock/scalpel/scalpel_user_interface.h"
+#include "sherlock/scalpel/scalpel_fixed_text.h"
#include "sherlock/scalpel/scalpel.h"
namespace Sherlock {
@@ -45,18 +46,9 @@ static const int SETUP_POINTS[12][4] = {
{ 219, 187, 316, 268 } // _key Pad Accel. Toggle
};
-static const char *const SETUP_STRS0[2] = { "off", "on" };
-static const char *const SETUP_STRS1[2] = { "Directly", "by Pixel" };
-static const char *const SETUP_STRS2[2] = { "Left", "Right" };
-static const char *const SETUP_STRS3[2] = { "Appear", "Slide" };
-static const char *const SETUP_STRS5[2] = { "Left", "Right" };
-static const char *const SETUP_NAMES[12] = {
- "Exit", "M", "V", "S", "B", "New Font Style", "J", "Calibrate Joystick", "F", "W", "P", "K"
-};
-
/*----------------------------------------------------------------*/
-void Settings::drawInteface(bool flag) {
+void Settings::drawInterface(bool flag) {
People &people = *_vm->_people;
ScalpelScreen &screen = *(ScalpelScreen *)_vm->_screen;
Sound &sound = *_vm->_sound;
@@ -74,55 +66,117 @@ void Settings::drawInteface(bool flag) {
SHERLOCK_SCREEN_HEIGHT - 2), INV_BACKGROUND);
}
+ tempStr = FIXED(Settings_Exit);
+ _hotkeyExit = tempStr.firstChar();
+ tempStr.deleteChar(0);
screen.makeButton(Common::Rect(SETUP_POINTS[0][0], SETUP_POINTS[0][1], SETUP_POINTS[0][2], SETUP_POINTS[0][1] + 10),
- SETUP_POINTS[0][3] - screen.stringWidth("Exit") / 2, "Exit");
+ SETUP_POINTS[0][3], tempStr, _hotkeyExit);
- tempStr = Common::String::format("Music %s", SETUP_STRS0[music._musicOn]);
+ if (music._musicOn) {
+ tempStr = FIXED(Settings_MusicOn);
+ } else {
+ tempStr = FIXED(Settings_MusicOff);
+ }
+ _hotkeyMusic = tempStr.firstChar();
+ tempStr.deleteChar(0);
screen.makeButton(Common::Rect(SETUP_POINTS[1][0], SETUP_POINTS[1][1], SETUP_POINTS[1][2], SETUP_POINTS[1][1] + 10),
- SETUP_POINTS[1][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ SETUP_POINTS[1][3], tempStr, _hotkeyMusic);
- tempStr = Common::String::format("Voices %s", SETUP_STRS0[sound._voices]);
- screen.makeButton(Common::Rect(SETUP_POINTS[2][0], SETUP_POINTS[2][1], SETUP_POINTS[2][2], SETUP_POINTS[2][1] + 10),
- SETUP_POINTS[2][3] - screen.stringWidth(tempStr) / 2, tempStr);
-
- tempStr = Common::String::format("Sound Effects %s", SETUP_STRS0[sound._digitized]);
- screen.makeButton(Common::Rect(SETUP_POINTS[3][0], SETUP_POINTS[3][1], SETUP_POINTS[3][2], SETUP_POINTS[3][1] + 10),
- SETUP_POINTS[3][3] - screen.stringWidth(tempStr) / 2, tempStr);
-
- tempStr = Common::String::format("Auto Help %s", SETUP_STRS5[ui._helpStyle]);
- screen.makeButton(Common::Rect(SETUP_POINTS[4][0], SETUP_POINTS[4][1], SETUP_POINTS[4][2], SETUP_POINTS[4][1] + 10),
- SETUP_POINTS[4][3] - screen.stringWidth(tempStr) / 2, tempStr);
- screen.makeButton(Common::Rect(SETUP_POINTS[5][0], SETUP_POINTS[5][1], SETUP_POINTS[5][2], SETUP_POINTS[5][1] + 10),
- SETUP_POINTS[5][3] - screen.stringWidth("New Font Style") / 2, "New Font Style");
+ if (people._portraitsOn) {
+ tempStr = FIXED(Settings_PortraitsOn);
+ } else {
+ tempStr = FIXED(Settings_PortraitsOff);
+ }
+ _hotkeyPortraits = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[10][0], SETUP_POINTS[10][1], SETUP_POINTS[10][2], SETUP_POINTS[10][1] + 10),
+ SETUP_POINTS[10][3], tempStr, _hotkeyPortraits);
// WORKAROUND: We don't support the joystick in ScummVM, so draw the next two buttons as disabled
- tempStr = "Joystick Off";
+ tempStr = FIXED(Settings_JoystickOff);
+ tempStr.deleteChar(0);
screen.makeButton(Common::Rect(SETUP_POINTS[6][0], SETUP_POINTS[6][1], SETUP_POINTS[6][2], SETUP_POINTS[6][1] + 10),
- SETUP_POINTS[6][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ SETUP_POINTS[6][3], tempStr);
screen.buttonPrint(Common::Point(SETUP_POINTS[6][3], SETUP_POINTS[6][1]), COMMAND_NULL, false, tempStr);
- tempStr = "Calibrate Joystick";
+ tempStr = FIXED(Settings_NewFontStyle);
+ _hotkeyNewFontStyle = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[5][0], SETUP_POINTS[5][1], SETUP_POINTS[5][2], SETUP_POINTS[5][1] + 10),
+ SETUP_POINTS[5][3], tempStr, _hotkeyNewFontStyle);
+
+ if (sound._digitized) {
+ tempStr = FIXED(Settings_SoundEffectsOn);
+ } else {
+ tempStr = FIXED(Settings_SoundEffectsOff);
+ }
+ _hotkeySoundEffects = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[3][0], SETUP_POINTS[3][1], SETUP_POINTS[3][2], SETUP_POINTS[3][1] + 10),
+ SETUP_POINTS[3][3], tempStr, _hotkeySoundEffects);
+
+ if (ui._slideWindows) {
+ tempStr = FIXED(Settings_WindowsSlide);
+ } else {
+ tempStr = FIXED(Settings_WindowsAppear);
+ }
+ _hotkeyWindows = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[9][0], SETUP_POINTS[9][1], SETUP_POINTS[9][2], SETUP_POINTS[9][1] + 10),
+ SETUP_POINTS[9][3], tempStr, _hotkeyWindows);
+
+ tempStr = FIXED(Settings_CalibrateJoystick);
+ tempStr.deleteChar(0);
screen.makeButton(Common::Rect(SETUP_POINTS[7][0], SETUP_POINTS[7][1], SETUP_POINTS[7][2], SETUP_POINTS[7][1] + 10),
- SETUP_POINTS[7][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ SETUP_POINTS[7][3], tempStr);
screen.buttonPrint(Common::Point(SETUP_POINTS[7][3], SETUP_POINTS[7][1]), COMMAND_NULL, false, tempStr);
- tempStr = Common::String::format("Fade %s", screen._fadeStyle ? "by Pixel" : "Directly");
- screen.makeButton(Common::Rect(SETUP_POINTS[8][0], SETUP_POINTS[8][1], SETUP_POINTS[8][2], SETUP_POINTS[8][1] + 10),
- SETUP_POINTS[8][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ if (ui._helpStyle) {
+ tempStr = FIXED(Settings_AutoHelpRight);
+ } else {
+ tempStr = FIXED(Settings_AutoHelpLeft);
+ }
+ _hotkeyAutoHelp = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[4][0], SETUP_POINTS[4][1], SETUP_POINTS[4][2], SETUP_POINTS[4][1] + 10),
+ SETUP_POINTS[4][3], tempStr, _hotkeyAutoHelp);
- tempStr = Common::String::format("Windows %s", ui._slideWindows ? "Slide" : "Appear");
- screen.makeButton(Common::Rect(SETUP_POINTS[9][0], SETUP_POINTS[9][1], SETUP_POINTS[9][2], SETUP_POINTS[9][1] + 10),
- SETUP_POINTS[9][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ if (sound._voices) {
+ tempStr = FIXED(Settings_VoicesOn);
+ } else {
+ tempStr = FIXED(Settings_VoicesOff);
+ }
+ _hotkeyVoices = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[2][0], SETUP_POINTS[2][1], SETUP_POINTS[2][2], SETUP_POINTS[2][1] + 10),
+ SETUP_POINTS[2][3], tempStr, _hotkeyVoices);
- tempStr = Common::String::format("Portraits %s", SETUP_STRS0[people._portraitsOn]);
- screen.makeButton(Common::Rect(SETUP_POINTS[10][0], SETUP_POINTS[10][1], SETUP_POINTS[10][2], SETUP_POINTS[10][1] + 10),
- SETUP_POINTS[10][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ if (screen._fadeStyle) {
+ tempStr = FIXED(Settings_FadeByPixel);
+ } else {
+ tempStr = FIXED(Settings_FadeDirectly);
+ }
+ _hotkeyFade = tempStr.firstChar();
+ tempStr.deleteChar(0);
+ screen.makeButton(Common::Rect(SETUP_POINTS[8][0], SETUP_POINTS[8][1], SETUP_POINTS[8][2], SETUP_POINTS[8][1] + 10),
+ SETUP_POINTS[8][3], tempStr, _hotkeyFade);
- tempStr = "Key Pad Slow";
+ tempStr = FIXED(Settings_KeyPadSlow);
+ tempStr.deleteChar(0);
screen.makeButton(Common::Rect(SETUP_POINTS[11][0], SETUP_POINTS[11][1], SETUP_POINTS[11][2], SETUP_POINTS[11][1] + 10),
- SETUP_POINTS[11][3] - screen.stringWidth(tempStr) / 2, tempStr);
+ SETUP_POINTS[11][3], tempStr);
screen.buttonPrint(Common::Point(SETUP_POINTS[11][3], SETUP_POINTS[11][1]), COMMAND_NULL, false, tempStr);
+ _hotkeysIndexed[0] = _hotkeyExit;
+ _hotkeysIndexed[1] = _hotkeyMusic;
+ _hotkeysIndexed[2] = _hotkeyVoices;
+ _hotkeysIndexed[3] = _hotkeySoundEffects;
+ _hotkeysIndexed[4] = _hotkeyAutoHelp;
+ _hotkeysIndexed[5] = _hotkeyNewFontStyle;
+ _hotkeysIndexed[8] = _hotkeyFade;
+ _hotkeysIndexed[9] = _hotkeyWindows;
+ _hotkeysIndexed[10] = _hotkeyPortraits;
+
// Show the window immediately, or slide it on-screen
if (!flag) {
if (!ui._slideWindows) {
@@ -151,7 +205,7 @@ int Settings::drawButtons(const Common::Point &pt, int _key) {
for (int idx = 0; idx < 12; ++idx) {
if ((pt.x > SETUP_POINTS[idx][0] && pt.x < SETUP_POINTS[idx][2] && pt.y > SETUP_POINTS[idx][1]
&& pt.y < (SETUP_POINTS[idx][1] + 10) && (events._pressed || events._released))
- || (_key == SETUP_NAMES[idx][0])) {
+ || (_key == toupper(_hotkeysIndexed[idx]))) {
found = idx;
color = COMMAND_HIGHLIGHTED;
} else {
@@ -160,50 +214,75 @@ int Settings::drawButtons(const Common::Point &pt, int _key) {
// Print the button text
switch (idx) {
+ case 0:
+ tempStr = FIXED(Settings_Exit);
+ break;
case 1:
- tempStr = Common::String::format("Music %s", SETUP_STRS0[music._musicOn]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (music._musicOn) {
+ tempStr = FIXED(Settings_MusicOn);
+ } else {
+ tempStr = FIXED(Settings_MusicOff);
+ }
break;
case 2:
- tempStr = Common::String::format("Voices %s", SETUP_STRS0[sound._voices]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (sound._voices) {
+ tempStr = FIXED(Settings_VoicesOn);
+ } else {
+ tempStr = FIXED(Settings_VoicesOff);
+ }
break;
case 3:
- tempStr = Common::String::format("Sound Effects %s", SETUP_STRS0[sound._digitized]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (sound._digitized) {
+ tempStr = FIXED(Settings_SoundEffectsOn);
+ } else {
+ tempStr = FIXED(Settings_SoundEffectsOff);
+ }
break;
case 4:
- tempStr = Common::String::format("Auto Help %s", SETUP_STRS2[ui._helpStyle]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (ui._helpStyle) {
+ tempStr = FIXED(Settings_AutoHelpRight);
+ } else {
+ tempStr = FIXED(Settings_AutoHelpLeft);
+ }
break;
- case 6:
- tempStr = "Joystick Off";
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), COMMAND_NULL, true, tempStr);
+ case 5:
+ tempStr = FIXED(Settings_NewFontStyle);
break;
+ case 6:
+ // Joystick Off - disabled in ScummVM
+ continue;
case 7:
- tempStr = "Calibrate Joystick";
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), COMMAND_NULL, true, tempStr);
- break;
+ // Calibrate Joystick - disabled in ScummVM
+ continue;
case 8:
- tempStr = Common::String::format("Fade %s", SETUP_STRS1[screen._fadeStyle]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (screen._fadeStyle) {
+ tempStr = FIXED(Settings_FadeByPixel);
+ } else {
+ tempStr = FIXED(Settings_FadeDirectly);
+ }
break;
case 9:
- tempStr = Common::String::format("Windows %s", SETUP_STRS3[ui._slideWindows]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (ui._slideWindows) {
+ tempStr = FIXED(Settings_WindowsSlide);
+ } else {
+ tempStr = FIXED(Settings_WindowsAppear);
+ }
break;
case 10:
- tempStr = Common::String::format("Portraits %s", SETUP_STRS0[people._portraitsOn]);
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr);
+ if (people._portraitsOn) {
+ tempStr = FIXED(Settings_PortraitsOn);
+ } else {
+ tempStr = FIXED(Settings_PortraitsOff);
+ }
break;
case 11:
- tempStr = "Key Pad Slow";
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), COMMAND_NULL, true, tempStr);
- break;
+ // Key Pad Slow - disabled in ScummVM
+ continue;
default:
- screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, SETUP_NAMES[idx]);
- break;
+ continue;
}
+ tempStr.deleteChar(0);
+ screen.buttonPrint(Common::Point(SETUP_POINTS[idx][3], SETUP_POINTS[idx][1]), color, true, tempStr, _hotkeysIndexed[idx]);
}
return found;
@@ -222,7 +301,7 @@ void Settings::show(SherlockEngine *vm) {
assert(vm->getGameID() == GType_SerratedScalpel);
Settings settings(vm);
- settings.drawInteface(false);
+ settings.drawInterface(false);
do {
if (ui._menuCounter)
@@ -258,11 +337,11 @@ void Settings::show(SherlockEngine *vm) {
found = settings.drawButtons(pt, ui._key);
}
- if ((found == 0 && events._released) || (ui._key == 'E' || ui._key == Common::KEYCODE_ESCAPE))
+ if ((found == 0 && events._released) || (ui._key == toupper(settings._hotkeyExit) || ui._key == Common::KEYCODE_ESCAPE))
// Exit
break;
- if ((found == 1 && events._released) || ui._key == 'M') {
+ if ((found == 1 && events._released) || ui._key == toupper(settings._hotkeyMusic)) {
// Toggle music
music._musicOn = !music._musicOn;
if (!music._musicOn)
@@ -271,30 +350,30 @@ void Settings::show(SherlockEngine *vm) {
music.startSong();
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 2 && events._released) || ui._key == 'V') {
+ if ((found == 2 && events._released) || ui._key == toupper(settings._hotkeyVoices)) {
sound._voices = !sound._voices;
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 3 && events._released) || ui._key == 'S') {
+ if ((found == 3 && events._released) || ui._key == toupper(settings._hotkeySoundEffects)) {
// Toggle sound effects
sound._digitized = !sound._digitized;
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 4 && events._released) || ui._key == 'A') {
+ if ((found == 4 && events._released) || ui._key == toupper(settings._hotkeyAutoHelp)) {
// Help button style
ui._helpStyle = !ui._helpStyle;
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 5 && events._released) || ui._key == 'N') {
+ if ((found == 5 && events._released) || ui._key == toupper(settings._hotkeyNewFontStyle)) {
// New font style
int fontNum = screen.fontNumber() + 1;
if (fontNum == 3)
@@ -302,28 +381,28 @@ void Settings::show(SherlockEngine *vm) {
screen.setFont(fontNum);
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 8 && events._released) || ui._key == 'F') {
+ if ((found == 8 && events._released) || ui._key == toupper(settings._hotkeyFade)) {
// Toggle fade style
screen._fadeStyle = !screen._fadeStyle;
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 9 && events._released) || ui._key == 'W') {
+ if ((found == 9 && events._released) || ui._key == toupper(settings._hotkeyWindows)) {
// Window style
ui._slideWindows = !ui._slideWindows;
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
- if ((found == 10 && events._released) || ui._key == 'P') {
+ if ((found == 10 && events._released) || ui._key == toupper(settings._hotkeyPortraits)) {
// Toggle portraits being shown
people._portraitsOn = !people._portraitsOn;
updateConfig = true;
- settings.drawInteface(true);
+ settings.drawInterface(true);
}
} while (!vm->shouldQuit());