diff options
author | Martin Kiewitz | 2010-07-19 13:50:06 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-07-19 13:50:06 +0000 |
commit | 2a0cff5c6ddc8409ef7daeead61b8e89479fe5a0 (patch) | |
tree | ca4db08bfe426fa6928b5ec8e243f62dd29f9112 /engines/sci/engine | |
parent | 8ea7eec267d925783e5762f54991e0d3879f7bd9 (diff) | |
download | scummvm-rg350-2a0cff5c6ddc8409ef7daeead61b8e89479fe5a0.tar.gz scummvm-rg350-2a0cff5c6ddc8409ef7daeead61b8e89479fe5a0.tar.bz2 scummvm-rg350-2a0cff5c6ddc8409ef7daeead61b8e89479fe5a0.zip |
SCI: implement foreign vocabulary support
not fully working, extended chars do not work currently as input
svn-id: r51027
Diffstat (limited to 'engines/sci/engine')
-rw-r--r-- | engines/sci/engine/kparse.cpp | 1 | ||||
-rw-r--r-- | engines/sci/engine/state.cpp | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/engines/sci/engine/kparse.cpp b/engines/sci/engine/kparse.cpp index 4287e7c96b..8714981034 100644 --- a/engines/sci/engine/kparse.cpp +++ b/engines/sci/engine/kparse.cpp @@ -93,6 +93,7 @@ reg_t kParse(EngineState *s, int argc, reg_t *argv) { char *error; ResultWordList words; reg_t event = argv[1]; + g_sci->checkVocabularySwitch(); Vocabulary *voc = g_sci->getVocabulary(); voc->parser_event = event; reg_t params[2] = { voc->parser_base, stringpos }; diff --git a/engines/sci/engine/state.cpp b/engines/sci/engine/state.cpp index 36b03c0ad9..e07373b466 100644 --- a/engines/sci/engine/state.cpp +++ b/engines/sci/engine/state.cpp @@ -324,4 +324,16 @@ Common::String SciEngine::strSplit(const char *str, const char *sep) { return retval; } +void SciEngine::checkVocabularySwitch() { + uint16 parserLanguage = 1; + if (SELECTOR(parseLang) != -1) + parserLanguage = readSelectorValue(_gamestate->_segMan, _gameObj, SELECTOR(parseLang)); + + if (parserLanguage != _vocabularyLanguage) { + delete _vocabulary; + _vocabulary = new Vocabulary(_resMan, parserLanguage > 1 ? true : false); + _vocabularyLanguage = parserLanguage; + } +} + } // End of namespace Sci |