diff options
Diffstat (limited to 'engines/zvision/scripting/script_manager.cpp')
| -rw-r--r-- | engines/zvision/scripting/script_manager.cpp | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/engines/zvision/scripting/script_manager.cpp b/engines/zvision/scripting/script_manager.cpp index 7904817156..c532a2b15d 100644 --- a/engines/zvision/scripting/script_manager.cpp +++ b/engines/zvision/scripting/script_manager.cpp @@ -36,6 +36,7 @@  #include "common/hashmap.h"  #include "common/debug.h"  #include "common/stream.h" +#include "common/config-manager.h"  namespace ZVision { @@ -521,6 +522,28 @@ void ScriptManager::ChangeLocationReal() {  	assert(_nextLocation.world != 0);  	debug(1, "Changing location to: %c %c %c %c %u", _nextLocation.world, _nextLocation.room, _nextLocation.node, _nextLocation.view, _nextLocation.offset); +	if (_nextLocation.world == 'g' && _nextLocation.room == 'j' && !ConfMan.getBool("originalsaveload")) { +		if ((_nextLocation.node == 's' || _nextLocation.node == 'r') && _nextLocation.view == 'e') { +			// Hook up the ScummVM save/restore dialog +			bool isSave = (_nextLocation.node == 's'); +			bool gameSavedOrLoaded = _engine->getSaveManager()->scummVMSaveLoadDialog(isSave); +			if (!gameSavedOrLoaded || isSave) { +				// Reload the current room +				_nextLocation.world = _currentLocation.world; +				_nextLocation.room = _currentLocation.room; +				_nextLocation.node = _currentLocation.node; +				_nextLocation.view = _currentLocation.view; +				_nextLocation.offset = _currentLocation.offset; +				_currentLocation.world = '0'; +				_currentLocation.room = '0'; +				_currentLocation.node = '0'; +				_currentLocation.view = '0'; +				_currentLocation.offset = 0; +			} else +				return; +		} +	} +  	_engine->setRenderDelay(2);  	if (getStateValue(StateKey_World) != 'g' || getStateValue(StateKey_Room) != 'j') { | 
