[Scummvm-cvs-logs] SF.net SVN: scummvm:[51538] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sat Jul 31 16:09:43 CEST 2010


Revision: 51538
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51538&view=rev
Author:   m_kiewitz
Date:     2010-07-31 14:09:42 +0000 (Sat, 31 Jul 2010)

Log Message:
-----------
SCI: kGameIsRestarting returns 2 when we restored

fixes castle of dr. brain save issue in puzzle room, fixes island of dr. brain save issue when saving in first room

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kmisc.cpp
    scummvm/trunk/engines/sci/engine/savegame.cpp
    scummvm/trunk/engines/sci/engine/state.h
    scummvm/trunk/engines/sci/sci.cpp

Modified: scummvm/trunk/engines/sci/engine/kmisc.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmisc.cpp	2010-07-31 13:13:46 UTC (rev 51537)
+++ scummvm/trunk/engines/sci/engine/kmisc.cpp	2010-07-31 14:09:42 UTC (rev 51538)
@@ -46,11 +46,11 @@
 ** Returns the restarting_flag in acc
 */
 reg_t kGameIsRestarting(EngineState *s, int argc, reg_t *argv) {
-	s->r_acc = make_reg(0, s->gameWasRestarted);
+	s->r_acc = make_reg(0, s->gameIsRestarting);
 
 	if (argc) { // Only happens during replay
 		if (!argv[0].toUint16()) // Set restarting flag
-			s->gameWasRestarted = false;
+			s->gameIsRestarting = GAMEISRESTARTING_NONE;
 	}
 
 	uint32 neededSleep = 30;

Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp	2010-07-31 13:13:46 UTC (rev 51537)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp	2010-07-31 14:09:42 UTC (rev 51538)
@@ -776,6 +776,9 @@
 	s->_msgState = new MessageState(s->_segMan);
 
 	s->abortScriptProcessing = kAbortLoadGame;
+
+	// signal restored game to game scripts
+	s->gameIsRestarting = GAMEISRESTARTING_RESTORE;
 }
 
 bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata *meta) {

Modified: scummvm/trunk/engines/sci/engine/state.h
===================================================================
--- scummvm/trunk/engines/sci/engine/state.h	2010-07-31 13:13:46 UTC (rev 51537)
+++ scummvm/trunk/engines/sci/engine/state.h	2010-07-31 14:09:42 UTC (rev 51538)
@@ -87,6 +87,12 @@
 	SAVEGAMEID_OFFICIALRANGE_END = 1999
 };
 
+enum {
+	GAMEISRESTARTING_NONE = 0,
+	GAMEISRESTARTING_RESTART = 1,
+	GAMEISRESTARTING_RESTORE = 2
+};
+
 class FileHandle {
 public:
 	Common::String _name;
@@ -159,7 +165,7 @@
 	int variablesMax[4];		///< Max. values for all variables
 
 	AbortGameState abortScriptProcessing;
-	bool gameWasRestarted;
+	int16 gameIsRestarting; // is set when restarting (=1) or restoring the game (=2)
 
 	int scriptStepCounter; // Counts the number of steps executed
 	int scriptGCInterval; // Number of steps in between gcs

Modified: scummvm/trunk/engines/sci/sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sci.cpp	2010-07-31 13:13:46 UTC (rev 51537)
+++ scummvm/trunk/engines/sci/sci.cpp	2010-07-31 14:09:42 UTC (rev 51538)
@@ -290,7 +290,7 @@
 	_gamestate->_executionStackPosChanged = false;
 
 	_gamestate->abortScriptProcessing = kAbortNone;
-	_gamestate->gameWasRestarted = false;
+	_gamestate->gameIsRestarting = GAMEISRESTARTING_NONE;
 
 	_gamestate->stack_base = stack->_entries;
 	_gamestate->stack_top = stack->_entries + stack->_capacity;
@@ -416,7 +416,7 @@
 			_gamestate->_segMan->resetSegMan();
 			initGame();
 			initStackBaseWithSelector(SELECTOR(play));
-			_gamestate->gameWasRestarted = true;
+			_gamestate->gameIsRestarting = GAMEISRESTARTING_RESTART;
 			if (_gfxMenu)
 				_gfxMenu->reset();
 			_gamestate->abortScriptProcessing = kAbortNone;


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