[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