From 2a0cff5c6ddc8409ef7daeead61b8e89479fe5a0 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Mon, 19 Jul 2010 13:50:06 +0000 Subject: SCI: implement foreign vocabulary support not fully working, extended chars do not work currently as input svn-id: r51027 --- engines/sci/engine/kparse.cpp | 1 + engines/sci/engine/state.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) (limited to 'engines/sci/engine') 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 -- cgit v1.2.3