aboutsummaryrefslogtreecommitdiff
path: root/sky/control.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sky/control.cpp')
-rw-r--r--sky/control.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/sky/control.cpp b/sky/control.cpp
index b5d51f6ec1..730699ba5b 100644
--- a/sky/control.cpp
+++ b/sky/control.cpp
@@ -1327,6 +1327,8 @@ uint16 Control::parseSaveData(uint8 *srcBuf) {
return RESTORE_FAILED;
}
}
+ SkyEngine::_systemVars.systemFlags |= SF_GAME_RESTORED;
+
LODSW(srcPos, _skySound->_saveSounds[0]);
LODSW(srcPos, _skySound->_saveSounds[1]);
_skySound->restoreSfx();
@@ -1337,8 +1339,8 @@ uint16 Control::parseSaveData(uint8 *srcBuf) {
LODSD(srcPos, mouseType);
LODSD(srcPos, palette);
- for (cnt = 0; cnt < 838; cnt++)
- LODSD(srcPos, Logic::_scriptVariables[cnt]);
+ _skyLogic->parseSaveData((uint32*)srcPos);
+ srcPos += NUM_SKY_SCRIPTVARS * sizeof(uint32);
for (cnt = 0; cnt < 60; cnt++)
LODSD(srcPos, reloadList[cnt]);
@@ -1375,11 +1377,6 @@ uint16 Control::parseSaveData(uint8 *srcBuf) {
if (srcPos - srcBuf != (int32)size)
error("Restore failed! Savegame data = %d bytes. Expected size: %d", srcPos-srcBuf, size);
- SkyEngine::_systemVars.systemFlags |= SF_GAME_RESTORED;
- if (!SkyEngine::isDemo()) {
- _skyLogic->fnLeaveSection(oldSection, 0, 0);
- _skyLogic->fnEnterSection(Logic::_scriptVariables[CUR_SECTION], 0, 0);
- }
_skyDisk->refreshFilesList(reloadList);
SkyEngine::_systemVars.currentMusic = (uint16)music;
if (!(SkyEngine::_systemVars.systemFlags & SF_MUS_OFF))