aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/fixed_text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sherlock/fixed_text.cpp')
-rw-r--r--engines/sherlock/fixed_text.cpp222
1 files changed, 222 insertions, 0 deletions
diff --git a/engines/sherlock/fixed_text.cpp b/engines/sherlock/fixed_text.cpp
new file mode 100644
index 0000000000..4679fe58b8
--- /dev/null
+++ b/engines/sherlock/fixed_text.cpp
@@ -0,0 +1,222 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "sherlock/sherlock.h"
+#include "sherlock/fixed_text.h"
+#include "sherlock/scalpel/scalpel_fixed_text.h"
+#include "sherlock/tattoo/tattoo_fixed_text.h"
+
+namespace Sherlock {
+
+static const char *const fixedJournalTextEN[] = {
+ // Holmes asked/said...
+ "Holmes asked me, ",
+ "Holmes asked the Inspector, ",
+ "Holmes asked %s, ",
+ "Holmes said to me, ",
+ "Holmes said to the Inspector, ",
+ "Holmes said to %s, ",
+ // I asked/said...
+ "I replied, ",
+ "The reply was, ",
+ // Holmes/I/The Inspector/Person asked/said (without "Then" prefix)
+ "Holmes asked, ",
+ "Holmes said, ",
+ "I asked, ",
+ "I said, ",
+ "The Inspector asked, ",
+ "The Inspector said, ",
+ "%s asked, ",
+ "%s said, ",
+ // Then Holmes/I/The Inspector/Person asked/said
+ "Then Holmes asked, ",
+ "Then Holmes said, ",
+ "Then I asked, ",
+ "Then I said, ",
+ "Then the Inspector asked, ",
+ "Then the Inspector said, ",
+ "Then %s asked, ",
+ "Then %s said, "
+};
+
+static const char *const fixedJournalTextDE[] = {
+ // Holmes asked/said...
+ "Holmes fragte mich, ",
+ "Holmes fragte Inspektor Lestrade, ",
+ "Holmes fragte %s, ",
+ "Holmes sagte mir, ",
+ "Holmes sagte Inspektor Lestrade, ",
+ "Holmes sagte %s, ",
+ // I asked/said...
+ "Ich antwortete, ",
+ "Die Antwort lautete, ",
+ // Holmes/I/The Inspector/Person asked/said (without "Then" prefix)
+ "Holmes fragte, ", // original: "fragte Holmes"
+ "Holmes sagte, ", // original: "sagte Holmes"
+ "Ich fragte, ", // original: "fragte Ich"
+ "Ich sagte, ", // original: "sagte Ich"
+ "Der Inspektor fragte, ",
+ "Der Inspektor sagte, ",
+ "%s fragte, ",
+ "%s sagte, ",
+ // Then Holmes/I/The Inspector/Person asked/said
+ "Dann fragte Holmes, ",
+ "Dann sagte Holmes, ",
+ "Dann fragte ich, ", // original: "Dann sagte Ich"
+ "Dann sagte ich, ", // original: "Dann sagte Ich"
+ "Dann fragte der Inspektor, ",
+ "Dann sagte der Inspektor, ",
+ "Dann fragte %s, ",
+ "Dann sagte %s, "
+};
+
+// Only used for Sherlock Holmes 2, so special characters should use the SH2 charset
+// small a w/ accent grave: 0x85 / octal 205
+// small e w/ accent acute: 0x82 / octal 202
+// small e w/ accent grave: 0x8A / octal 212
+// small e w/ circonflexe: 0x88 / octal 210
+// small cedilla: 0x87 / octal 207
+static const char *const fixedJournalTextFR[] = {
+ // Holmes asked/said...
+ "Holmes me demanda, ", // original: "Holmes m'a demand\202, "
+ "Holmes demanda \205 l'inspecteur, ", // original: "Holmes a demand\202 \205 l'inspecteur, "
+ "Holmes demanda \205 %s, ", // original: "Holmes a demand\202 \205 %s, "
+ "Holmes me dit, ", // original: "Holmes m'a dit, "
+ "Holmes dit \205 l'inspecteur, ", // original: "Holmes a dit \205 l'inspecteur, "
+ "Holmes dit \205 %s, ", // original: "Holmes a dit \205 %s, "
+ // I asked/said...
+ "Je r\202pondis, ", // original: "J'ai r\202pondu, ",
+ "La r\202ponse fut, ",
+ // Holmes/I/The Inspector/Person asked/said (without "Then" prefix)
+ "Holmes demanda, ", // original: "Holmes a demand\202, "
+ "Holmes dit, ",
+ "Je demandai, ", // original: "J'ai demand\202, "
+ "Je dis, ", // original: "J'ai dit, "
+ "L'inspecteur demanda, ", // original: ""L'inspecteur a demand\202, "
+ "L'inspecteur dit, ",
+ "%s demanda, ", // original: "%s a demand\202, "
+ "%s dit, ",
+ // Then Holmes/I/The Inspector/Person asked/said
+ "Alors Holmes demanda, ", // original: it seems "puis"/"then" was not used/removed. They instead added a space character, so sentences looked weird
+ "Alors Holmes dit, ",
+ "Alors je demandai, ",
+ "Alors je dis, ",
+ "Alors l'inspecteur demanda, ",
+ "Alors l'inspecteur dit, ",
+ "Alors %s demanda, ",
+ "Alors %s dit, "
+};
+
+// Sherlock Holmes 1+2:
+// small e w/ accent bottom to top : 0x82 / octal 202
+// big E w/ accent bottom to top : 0x90 / octal 220
+// small a w/ accent bottom to top : 0xA0 / octal 240
+// small i w/ accent bottom to top : 0xA1 / octal 241
+// small o w/ accent bottom to top : 0xA2 / octal 242
+// small u w/ accent bottom to top : 0xA3 / octal 243
+// small n w/ wavy line : 0xA4 / octal 244
+// big N w/ wavy line : 0xA5 / octal 245
+// small a w/ under line : 0xA6 / octal 246
+// small o w/ under line : 0xA7 / octal 247
+// inverted question mark : 0xA8 / octal 250
+static const char *const fixedJournalTextES[] = {
+ // Holmes asked/said...
+ "Holmes me pregunt\242, ", // original: "Holmes me pidi\242, ",
+ "Holmes pregunt\242 al Inspector, ", // original: "el inspector"?
+ "Holmes pregunt\242 %s, ",
+ "Holmes me dijo, ",
+ "Holmes dijo al Inspector, ", // original: "el inspector"?
+ "Holmes dijo a %s, ", // original: "Holmes dijo a %s, "
+ // I asked/said...
+ "Yo content\202, ", // original: "Yo respond\241, ",
+ "La respuesta fue, ",
+ // Holmes/I/The Inspector/Person asked/said (without "Then" prefix)
+ "Holmes pregunt\242, ",
+ "Holmes dijo, ",
+ "Yo pregunt\202, ", // original: "Yo pregunt\242, ",
+ "Yo dije, ",
+ "El Inspector pregunt\242, ",
+ "El Inspector dijo, ",
+ "%s pregunt\242, ",
+ "%s dijo, ",
+ // Then Holmes/I/The Inspector/Person asked/said
+ "Despu\202s Holmes pregunt\242, ", // original: added "Entonces" instead of "Despues"
+ "Despu\202s Holmes dijo, ",
+ "Despu\202s yo pregunt\202, ", // "pregunt\242, "
+ "Despu\202s yo dije, ",
+ "Despu\202s el Inspector pregunt\242, ",
+ "Despu\202s el Inspector dijo, ",
+ "Despu\202s %s pregunt\242, ",
+ "Despu\202s %s dijo, "
+};
+
+FixedText::FixedText(SherlockEngine *vm) {
+ _vm = vm;
+
+ // Figure out which fixed texts to use
+ Common::Language curLanguage = _vm->getLanguage();
+
+ switch (curLanguage) {
+ case Common::EN_ANY:
+ // Used by Sherlock Holmes 1+2
+ _fixedJournalTextArray = fixedJournalTextEN;
+ _fixedObjectPickedUpText = "Picked up %s";
+ break;
+ case Common::DE_DEU:
+ // Used by Sherlock Holmes 1+2
+ _fixedJournalTextArray = fixedJournalTextDE;
+ _fixedObjectPickedUpText = "%s eingesteckt";
+ break;
+ case Common::FR_FRA:
+ // Used by Sherlock Holmes 2
+ _fixedJournalTextArray = fixedJournalTextFR;
+ _fixedObjectPickedUpText = ""; // Not used, because there is no French Sherlock Holmes 1
+ break;
+ case Common::ES_ESP:
+ // Used by Sherlock Holmes 1+2
+ _fixedJournalTextArray = fixedJournalTextES;
+ _fixedObjectPickedUpText = "Cogido/a %s";
+ break;
+ default:
+ // Default to English
+ _fixedJournalTextArray = fixedJournalTextEN;
+ _fixedObjectPickedUpText = "Picked up %s";
+ break;
+ }
+}
+
+FixedText *FixedText::init(SherlockEngine *vm) {
+ if (vm->getGameID() == GType_SerratedScalpel)
+ return new Scalpel::ScalpelFixedText(vm);
+ else
+ return new Tattoo::TattooFixedText(vm);
+}
+
+const char *FixedText::getJournalText(int fixedJournalTextId) {
+ return _fixedJournalTextArray[fixedJournalTextId];
+}
+
+const char *FixedText::getObjectPickedUpText() {
+ return _fixedObjectPickedUpText;
+}
+
+} // End of namespace Sherlock