diff options
author | uruk | 2014-07-04 18:39:03 +0200 |
---|---|---|
committer | uruk | 2014-07-04 18:39:03 +0200 |
commit | 8b8216bf2cfbaa016aa20a15eb7ac9069d8f9f21 (patch) | |
tree | 2113c8730bbf3b2af67c84c1fada65433fa3409d /engines/cge2/saveload.cpp | |
parent | 07fa4831426142a6ec0bede7af979a0628e53ea4 (diff) | |
download | scummvm-rg350-8b8216bf2cfbaa016aa20a15eb7ac9069d8f9f21.tar.gz scummvm-rg350-8b8216bf2cfbaa016aa20a15eb7ac9069d8f9f21.tar.bz2 scummvm-rg350-8b8216bf2cfbaa016aa20a15eb7ac9069d8f9f21.zip |
CGE2: Fully implement the save/load system.
Now the toolbar is working too after loading.
Diffstat (limited to 'engines/cge2/saveload.cpp')
-rw-r--r-- | engines/cge2/saveload.cpp | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/engines/cge2/saveload.cpp b/engines/cge2/saveload.cpp index f6cbbf93e1..0ea957f9e1 100644 --- a/engines/cge2/saveload.cpp +++ b/engines/cge2/saveload.cpp @@ -38,6 +38,7 @@ #include "cge2/hero.h" #include "cge2/text.h" #include "cge2/sound.h" +#include "cge2/cge2_main.h" namespace CGE2 { @@ -260,8 +261,7 @@ void CGE2Engine::syncGame(Common::SeekableReadStream *readStream, Common::WriteS // Save the references of the items in the heroes pockets: for (int i = 0; i < 2; i++) { for (int j = 0; j < kPocketMax; j++) { - Sprite *spr = _heroTab[i]->_pocket[j]; - int ref = (spr) ? spr->_ref : -1; + int ref = _heroTab[i]->_downPocketId[j]; s.syncAsSint16LE(ref); } } @@ -271,7 +271,7 @@ void CGE2Engine::syncGame(Common::SeekableReadStream *readStream, Common::WriteS for (int j = 0; j < kPocketMax; j++) { int ref = 0; s.syncAsSint16LE(ref); - _heroTab[i]->_pocket[j] = _spare->locate(ref); + _heroTab[i]->_downPocketId[j] = ref; } } } @@ -310,25 +310,13 @@ void CGE2Engine::syncHeader(Common::Serializer &s) { } Common::Error CGE2Engine::loadGameState(int slot) { - // Clear current game activity sceneDown(); resetGame(); - // If music is playing, kill it. - if (_music) - _midiPlayer->killMidi(); - if (!loadGame(slot)) return Common::kReadingFailed; - + initToolbar(); loadHeroes(); - sceneUp(_now); - - _busyPtr = _vga->_showQ->locate(kBusyRef); - - _vol[0] = _vga->_showQ->locate(kDvolRef); - _vol[1] = _vga->_showQ->locate(kMvolRef); - return Common::kNoError; } @@ -338,6 +326,9 @@ void CGE2Engine::resetGame() { _spare->clear(); _vga->_showQ->clear(); _commandHandler->reset(); + loadScript("CGE.INI"); + delete _infoLine; + _infoLine = new InfoLine(this, kInfoW); } bool CGE2Engine::loadGame(int slotNumber) { |