From 6bd5dea027245d617687b7e4a4b76b52d84ce52d Mon Sep 17 00:00:00 2001 From: Florian Kagerer Date: Thu, 21 May 2009 16:46:40 +0000 Subject: LOL: - implemented freeze spell - fixed saveload code - added some opcode for the swamp svn-id: r40763 --- engines/kyra/saveload_lol.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'engines/kyra/saveload_lol.cpp') 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); -- cgit v1.2.3