aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/saveload_lol.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-05-21 16:46:40 +0000
committerFlorian Kagerer2009-05-21 16:46:40 +0000
commit6bd5dea027245d617687b7e4a4b76b52d84ce52d (patch)
tree763080d033fb4e8c4209742f907df481029e1b8d /engines/kyra/saveload_lol.cpp
parent6e93825b2e4d512d082bc8748ee169a09a234a94 (diff)
downloadscummvm-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.cpp19
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);