[Scummvm-cvs-logs] SF.net SVN: scummvm:[55561] scummvm/trunk/engines/sci
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Thu Jan 27 11:49:11 CET 2011
Revision: 55561
http://scummvm.svn.sourceforge.net/scummvm/?rev=55561&view=rev
Author: thebluegr
Date: 2011-01-27 10:49:11 +0000 (Thu, 27 Jan 2011)
Log Message:
-----------
SCI: Set the printLang and parseLang selectors again when restarting, if necessary.
This sets the language again correctly to the language selected in the launcher when
restarting multilingual games.
Modified Paths:
--------------
scummvm/trunk/engines/sci/sci.cpp
scummvm/trunk/engines/sci/sci.h
Modified: scummvm/trunk/engines/sci/sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sci.cpp 2011-01-27 07:58:57 UTC (rev 55560)
+++ scummvm/trunk/engines/sci/sci.cpp 2011-01-27 10:49:11 UTC (rev 55561)
@@ -262,20 +262,9 @@
debug("Emulating SCI version %s\n", getSciVersionDesc(getSciVersion()));
// Patch in our save/restore code, so that dialogs are replaced
- patchGameSaveRestore(segMan);
+ patchGameSaveRestore();
+ setLauncherLanguage();
- if (_gameDescription->flags & ADGF_ADDENGLISH) {
- // if game is multilingual
- Common::Language selectedLanguage = Common::parseLanguage(ConfMan.get("language"));
- if (selectedLanguage == Common::EN_ANY) {
- // and english was selected as language
- if (SELECTOR(printLang) != -1) // set text language to english
- writeSelectorValue(segMan, _gameObjectAddress, SELECTOR(printLang), 1);
- if (SELECTOR(parseLang) != -1) // and set parser language to english as well
- writeSelectorValue(segMan, _gameObjectAddress, SELECTOR(parseLang), 1);
- }
- }
-
// Check whether loading a savestate was requested
int directSaveSlotLoading = ConfMan.getInt("save_slot");
if (directSaveSlotLoading >= 0) {
@@ -434,7 +423,8 @@
0x48, // ret
};
-void SciEngine::patchGameSaveRestore(SegManager *segMan) {
+void SciEngine::patchGameSaveRestore() {
+ SegManager *segMan = _gamestate->_segMan;
const Object *gameObject = segMan->getObject(_gameObjectAddress);
const uint16 gameMethodCount = gameObject->getMethodCount();
const Object *gameSuperObject = segMan->getObject(_gameSuperClassAddress);
@@ -680,7 +670,8 @@
_gamestate->_segMan->resetSegMan();
initGame();
initStackBaseWithSelector(SELECTOR(play));
- patchGameSaveRestore(_gamestate->_segMan);
+ patchGameSaveRestore();
+ setLauncherLanguage();
_gamestate->gameIsRestarting = GAMEISRESTARTING_RESTART;
if (_gfxMenu)
_gfxMenu->reset();
@@ -689,7 +680,8 @@
_gamestate->abortScriptProcessing = kAbortNone;
_gamestate->_executionStack.clear();
initStackBaseWithSelector(SELECTOR(replay));
- patchGameSaveRestore(_gamestate->_segMan);
+ patchGameSaveRestore();
+ setLauncherLanguage();
_gamestate->shrinkStackToBase();
_gamestate->abortScriptProcessing = kAbortNone;
@@ -798,6 +790,19 @@
return 0;
}
+void SciEngine::setLauncherLanguage() {
+ if (_gameDescription->flags & ADGF_ADDENGLISH) {
+ // If game is multilingual
+ if (Common::parseLanguage(ConfMan.get("language")) == Common::EN_ANY) {
+ // and English was selected as language
+ if (SELECTOR(printLang) != -1) // set text language to English
+ writeSelectorValue(_gamestate->_segMan, _gameObjectAddress, SELECTOR(printLang), K_LANG_ENGLISH);
+ if (SELECTOR(parseLang) != -1) // and set parser language to English as well
+ writeSelectorValue(_gamestate->_segMan, _gameObjectAddress, SELECTOR(parseLang), K_LANG_ENGLISH);
+ }
+ }
+}
+
void SciEngine::pauseEngineIntern(bool pause) {
_mixer->pauseAll(pause);
if (_soundCmd)
Modified: scummvm/trunk/engines/sci/sci.h
===================================================================
--- scummvm/trunk/engines/sci/sci.h 2011-01-27 07:58:57 UTC (rev 55560)
+++ scummvm/trunk/engines/sci/sci.h 2011-01-27 10:49:11 UTC (rev 55561)
@@ -268,7 +268,7 @@
bool checkExportBreakpoint(uint16 script, uint16 pubfunct);
bool checkSelectorBreakpoint(BreakpointType breakpointType, reg_t send_obj, int selector);
- void patchGameSaveRestore(SegManager *segMan);
+ void patchGameSaveRestore();
public:
@@ -352,6 +352,7 @@
void initStackBaseWithSelector(Selector selector);
bool gameHasFanMadePatch();
+ void setLauncherLanguage();
const ADGameDescription *_gameDescription;
const SciGameId _gameId;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list