diff options
author | Florian Kagerer | 2009-05-21 16:46:40 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-05-21 16:46:40 +0000 |
commit | 6bd5dea027245d617687b7e4a4b76b52d84ce52d (patch) | |
tree | 763080d033fb4e8c4209742f907df481029e1b8d /engines/kyra/saveload_lol.cpp | |
parent | 6e93825b2e4d512d082bc8748ee169a09a234a94 (diff) | |
download | scummvm-rg350-6bd5dea027245d617687b7e4a4b76b52d84ce52d.tar.gz scummvm-rg350-6bd5dea027245d617687b7e4a4b76b52d84ce52d.tar.bz2 scummvm-rg350-6bd5dea027245d617687b7e4a4b76b52d84ce52d.zip |
LOL: - implemented freeze spell
- fixed saveload code
- added some opcode for the swamp
svn-id: r40763
Diffstat (limited to 'engines/kyra/saveload_lol.cpp')
-rw-r--r-- | engines/kyra/saveload_lol.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/engines/kyra/saveload_lol.cpp b/engines/kyra/saveload_lol.cpp index 11e18d0f31..4998795f73 100644 --- a/engines/kyra/saveload_lol.cpp +++ b/engines/kyra/saveload_lol.cpp @@ -119,10 +119,15 @@ Common::Error LoLEngine::loadGameState(int slot) { _inventoryCurItem = in.readSint16BE(); _itemInHand = in.readSint16BE(); _lastMouseRegion = in.readSint16BE(); - for (int i = 0; i < 16; i++) - _gameFlags[i] = in.readUint16BE(); - _freezeStateFlags = in.readUint16BE(); - _unkFlag = in.readUint16BE(); + if (header.version == 14) { + for (int i = 0; i < 16; i++) + _gameFlags[i] = in.readUint16BE(); + _gameFlags[26] = in.readUint16BE(); + _gameFlags[36] = in.readUint16BE(); + } else { + for (int i = 0; i < 40; i++) + _gameFlags[i] = in.readUint16BE(); + } for (int i = 0; i < 24; i++) _globalScriptVars[i] = in.readUint16BE(); _brightness = in.readByte(); @@ -240,7 +245,7 @@ Common::Error LoLEngine::loadGameState(int slot) { loadLevel(_currentLevel); gui_drawPlayField(); timerSpecialCharacterUpdate(0); - _unkFlag |= 0x800; + _gameFlags[36] |= 0x800; while (!_screen->isMouseVisible()) _screen->showMouse(); @@ -318,10 +323,8 @@ Common::Error LoLEngine::saveGameState(int slot, const char *saveName, const Gra out->writeSint16BE(_inventoryCurItem); out->writeSint16BE(_itemInHand); out->writeSint16BE(_lastMouseRegion); - for (int i = 0; i < 16; i++) + for (int i = 0; i < 40; i++) out->writeUint16BE(_gameFlags[i]); - out->writeUint16BE(_freezeStateFlags); - out->writeUint16BE(_unkFlag); for (int i = 0; i < 24; i++) out->writeUint16BE(_globalScriptVars[i]); out->writeByte(_brightness); |