diff options
author | Paul Gilbert | 2017-09-18 18:16:03 -0400 |
---|---|---|
committer | Paul Gilbert | 2017-09-18 18:16:03 -0400 |
commit | 5af8ed228d729dd9ef71f5f6cea7adb254dff7a4 (patch) | |
tree | 042295fae00eb651b35f3702408e60944462ae88 /engines/titanic/true_talk | |
parent | 1d4e2c67fa20d962b0755cbe6a9c653f3bec76e5 (diff) | |
download | scummvm-rg350-5af8ed228d729dd9ef71f5f6cea7adb254dff7a4.tar.gz scummvm-rg350-5af8ed228d729dd9ef71f5f6cea7adb254dff7a4.tar.bz2 scummvm-rg350-5af8ed228d729dd9ef71f5f6cea7adb254dff7a4.zip |
TITANIC: Add VocabMode enum, fix German vocab loading
Diffstat (limited to 'engines/titanic/true_talk')
-rw-r--r-- | engines/titanic/true_talk/script_handler.cpp | 6 | ||||
-rw-r--r-- | engines/titanic/true_talk/script_handler.h | 2 | ||||
-rw-r--r-- | engines/titanic/true_talk/title_engine.cpp | 9 | ||||
-rw-r--r-- | engines/titanic/true_talk/title_engine.h | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_sentence.cpp | 6 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_string_node.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_string_node.h | 2 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_vocab.cpp | 12 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_vocab.h | 5 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_word.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_word.h | 4 |
12 files changed, 33 insertions, 27 deletions
diff --git a/engines/titanic/true_talk/script_handler.cpp b/engines/titanic/true_talk/script_handler.cpp index f716a96130..0572cd4190 100644 --- a/engines/titanic/true_talk/script_handler.cpp +++ b/engines/titanic/true_talk/script_handler.cpp @@ -32,13 +32,13 @@ namespace Titanic { /*------------------------------------------------------------------------*/ -CScriptHandler::CScriptHandler(CTitleEngine *owner, int val1, int val2) : +CScriptHandler::CScriptHandler(CTitleEngine *owner, int val1, VocabMode vocabMode) : _owner(owner), _script(owner->_script), _parser(this), _inputCtr(0), _concept1P(nullptr), _concept2P(nullptr), _concept3P(nullptr), _concept4P(nullptr) { g_vm->_scriptHandler = this; g_vm->_script = _script; - g_vm->_exeResources.reset(this, val1, val2); - _vocab = new TTvocab(val2); + g_vm->_exeResources.reset(this, val1, vocabMode); + _vocab = new TTvocab(vocabMode); } CScriptHandler::~CScriptHandler() { diff --git a/engines/titanic/true_talk/script_handler.h b/engines/titanic/true_talk/script_handler.h index b8e62a586c..149532bd1b 100644 --- a/engines/titanic/true_talk/script_handler.h +++ b/engines/titanic/true_talk/script_handler.h @@ -50,7 +50,7 @@ public: TTconcept *_concept3P; TTconcept *_concept4P; public: - CScriptHandler(CTitleEngine *owner, int val1, int val2); + CScriptHandler(CTitleEngine *owner, int val1, VocabMode vocabMode); ~CScriptHandler(); /** diff --git a/engines/titanic/true_talk/title_engine.cpp b/engines/titanic/true_talk/title_engine.cpp index 23327014d6..f11bf1df29 100644 --- a/engines/titanic/true_talk/title_engine.cpp +++ b/engines/titanic/true_talk/title_engine.cpp @@ -23,6 +23,7 @@ #include "titanic/true_talk/title_engine.h" #include "titanic/support/files_manager.h" #include "titanic/titanic.h" +#include "titanic/translation.h" namespace Titanic { @@ -34,9 +35,9 @@ CTitleEngine::~CTitleEngine() { delete _scriptHandler; } -void CTitleEngine::setup(int val1, int val2) { +void CTitleEngine::setup(int val1, VocabMode vocabMode) { _script = new TTTitleScript(); - _scriptHandler = new CScriptHandler(this, val1, val2); + _scriptHandler = new CScriptHandler(this, val1, vocabMode); } /*------------------------------------------------------------------------*/ @@ -53,8 +54,8 @@ void STtitleEngine::reset() { _indexes.clear(); } -void STtitleEngine::setup(int val1, int val2) { - CTitleEngine::setup(val1, 3); +void STtitleEngine::setup(int val1, VocabMode vocabMode) { + CTitleEngine::setup(val1, TRANSLATE(VOCAB_MODE_EN, VOCAB_MODE_DE)); } int STtitleEngine::setResponse(TTscriptBase *script, TTresponse *response) { diff --git a/engines/titanic/true_talk/title_engine.h b/engines/titanic/true_talk/title_engine.h index ca7a5dcd14..d9b21af423 100644 --- a/engines/titanic/true_talk/title_engine.h +++ b/engines/titanic/true_talk/title_engine.h @@ -51,7 +51,7 @@ public: /** * Setup the engine */ - virtual void setup(int val1, int val2 = 0); + virtual void setup(int val1, VocabMode vocabMode = VOCAB_MODE_NONE); /** * Sets a conversation reponse @@ -80,7 +80,7 @@ public: /** * Setup the engine */ - virtual void setup(int val1, int val2 = 0); + virtual void setup(int val1, VocabMode vocabMode = VOCAB_MODE_NONE); /** * Sets a conversation reponse diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp index d0cead3206..a7766e8d18 100644 --- a/engines/titanic/true_talk/true_talk_manager.cpp +++ b/engines/titanic/true_talk/true_talk_manager.cpp @@ -48,7 +48,7 @@ CTrueTalkNPC *CTrueTalkManager::_currentNPC; CTrueTalkManager::CTrueTalkManager(CGameManager *owner) : _gameManager(owner), _scripts(), _currentCharId(0), _dialogueFile(nullptr), _dialogueId(0) { - _titleEngine.setup(3, 3); + _titleEngine.setup(3, VOCAB_MODE_EN); _quotes.load(); _quotesTree.load(); diff --git a/engines/titanic/true_talk/tt_sentence.cpp b/engines/titanic/true_talk/tt_sentence.cpp index 5a5bff7af8..b20f760f48 100644 --- a/engines/titanic/true_talk/tt_sentence.cpp +++ b/engines/titanic/true_talk/tt_sentence.cpp @@ -317,7 +317,7 @@ bool TTsentence::localWord(const char *str) const { foundMatch = true; } - int val = g_vm->_exeResources.get18(); + VocabMode mode = g_vm->_exeResources.getVocabMode(); bool result = false; for (TTsentenceNode *nodeP = _nodesP; nodeP && !result; @@ -327,9 +327,9 @@ bool TTsentence::localWord(const char *str) const { continue; const TTstring wordStr = nodeP->_wordP->_text; - if (val == 3 && wordStr == str) { + if (mode == VOCAB_MODE_EN && wordStr == str) { result = true; - } else if (nodeP->_wordP->findSynByName(str, &syn, val)) { + } else if (nodeP->_wordP->findSynByName(str, &syn, mode)) { result = true; } else if (foundMatch) { result = wordStr == "it" || wordStr == "that" || wordStr == "he" diff --git a/engines/titanic/true_talk/tt_string_node.cpp b/engines/titanic/true_talk/tt_string_node.cpp index 60c506e8cd..16860cc93f 100644 --- a/engines/titanic/true_talk/tt_string_node.cpp +++ b/engines/titanic/true_talk/tt_string_node.cpp @@ -55,9 +55,9 @@ void TTstringNode::initialize(TTstringNode *oldNode) { delete oldNode; } -TTstringNode *TTstringNode::findByName(const TTstring &str, int mode) { +TTstringNode *TTstringNode::findByName(const TTstring &str, VocabMode mode) { for (TTstringNode *nodeP = this; nodeP; nodeP = dynamic_cast<TTstringNode *>(nodeP->_nextP)) { - if (nodeP->_mode == mode || (mode == 3 && nodeP->_mode < 3)) { + if (nodeP->_mode == mode || (mode == VOCAB_MODE_EN && nodeP->_mode < 3)) { if (nodeP->_string == str) return nodeP; } diff --git a/engines/titanic/true_talk/tt_string_node.h b/engines/titanic/true_talk/tt_string_node.h index ced162b439..ee17cf1d38 100644 --- a/engines/titanic/true_talk/tt_string_node.h +++ b/engines/titanic/true_talk/tt_string_node.h @@ -51,7 +51,7 @@ public: /** * Find a string node in the linked chain by name */ - TTstringNode *findByName(const TTstring &str, int mode); + TTstringNode *findByName(const TTstring &str, VocabMode mode); }; } // End of namespace Titanic diff --git a/engines/titanic/true_talk/tt_vocab.cpp b/engines/titanic/true_talk/tt_vocab.cpp index 20df6bd4bb..861d8f89a0 100644 --- a/engines/titanic/true_talk/tt_vocab.cpp +++ b/engines/titanic/true_talk/tt_vocab.cpp @@ -28,12 +28,13 @@ #include "titanic/true_talk/tt_picture.h"
#include "titanic/true_talk/tt_pronoun.h"
#include "titanic/titanic.h"
+#include "titanic/translation.h"
#include "common/file.h"
namespace Titanic {
-TTvocab::TTvocab(int val): _headP(nullptr), _tailP(nullptr),
- _word(nullptr), _vocabMode(val) {
+TTvocab::TTvocab(VocabMode vocabMode): _headP(nullptr), _tailP(nullptr),
+ _word(nullptr), _vocabMode(vocabMode) {
load("STVOCAB");
}
@@ -131,7 +132,8 @@ int TTvocab::load(const CString &name) { }
void TTvocab::addWord(TTword *word) {
- TTword *existingWord = findWord(word->_text);
+ TTword *existingWord = g_language == Common::DE_DEU ? nullptr :
+ findWord(word->_text);
if (existingWord) {
if (word->_synP) {
@@ -160,7 +162,7 @@ TTword *TTvocab::findWord(const TTstring &str) { TTword *word = _headP;
while (word && !flag) {
- if (_vocabMode != 3 || strcmp(word->c_str(), str)) {
+ if (_vocabMode != VOCAB_MODE_EN || strcmp(word->c_str(), str)) {
if (word->findSynByName(str, tempNode, _vocabMode))
flag = true;
else
@@ -203,7 +205,7 @@ TTword *TTvocab::getPrimeWord(TTstring &str, TTword **srcWord) const { } else {
// Standard word
for (vocabP = _headP; vocabP; vocabP = vocabP->_nextP) {
- if (_vocabMode == 3 && !strcmp(str.c_str(), vocabP->c_str())) {
+ if (_vocabMode == VOCAB_MODE_EN && !strcmp(str.c_str(), vocabP->c_str())) {
newWord = vocabP->copy();
newWord->_nextP = nullptr;
newWord->setSyn(nullptr);
diff --git a/engines/titanic/true_talk/tt_vocab.h b/engines/titanic/true_talk/tt_vocab.h index 614d1bbf02..7e5cc29bc5 100644 --- a/engines/titanic/true_talk/tt_vocab.h +++ b/engines/titanic/true_talk/tt_vocab.h @@ -23,6 +23,7 @@ #ifndef TITANIC_ST_VOCAB_H #define TITANIC_ST_VOCAB_H +#include "titanic/support/exe_resources.h" #include "titanic/support/string.h" #include "titanic/true_talk/tt_string.h" #include "titanic/true_talk/tt_word.h" @@ -34,7 +35,7 @@ private: TTword *_headP; TTword *_tailP; TTword *_word; - int _vocabMode; + VocabMode _vocabMode; private: /** * Load the vocab data @@ -77,7 +78,7 @@ private: */ TTword *getPrefixedWord(TTstring &str) const; public: - TTvocab(int val); + TTvocab(VocabMode vocabMode); ~TTvocab(); /** diff --git a/engines/titanic/true_talk/tt_word.cpp b/engines/titanic/true_talk/tt_word.cpp index 5ed3e5755f..c05b61e48c 100644 --- a/engines/titanic/true_talk/tt_word.cpp +++ b/engines/titanic/true_talk/tt_word.cpp @@ -163,14 +163,14 @@ uint TTword::readNumber(const char *str) { } bool TTword::testFileHandle(FileHandle file) const { - if (g_vm->_exeResources.is18Equals(3)) + if (g_vm->_exeResources.isVocabMode(VOCAB_MODE_EN)) return true; // TODO: Figure out why original compares passed file handle against specific values return true; } -bool TTword::findSynByName(const TTstring &str, TTsynonym *dest, int mode) const { +bool TTword::findSynByName(const TTstring &str, TTsynonym *dest, VocabMode mode) const { if (!_synP) return false; diff --git a/engines/titanic/true_talk/tt_word.h b/engines/titanic/true_talk/tt_word.h index 7a42614f43..207c1c155b 100644 --- a/engines/titanic/true_talk/tt_word.h +++ b/engines/titanic/true_talk/tt_word.h @@ -23,6 +23,7 @@ #ifndef TITANIC_TT_WORD_H #define TITANIC_TT_WORD_H +#include "titanic/support/exe_resources.h" #include "titanic/support/simple_file.h" #include "titanic/true_talk/tt_string.h" #include "titanic/true_talk/tt_synonym.h" @@ -102,9 +103,10 @@ public: * Finds a synonym in the word by name, if one exists * @param str Name to search for * @param dest Destination synonym instance to copy match into + * @param mode Specifies English or German vocab mode * @returns Returns true if a match was found */ - bool findSynByName(const TTstring &str, TTsynonym *dest, int mode) const; + bool findSynByName(const TTstring &str, TTsynonym *dest, VocabMode mode) const; const char *c_str() const { return _text.c_str(); } operator const char *() const { return c_str(); } |