diff options
author | Strangerke | 2011-09-01 00:22:20 +0200 |
---|---|---|
committer | Strangerke | 2011-09-01 00:22:20 +0200 |
commit | 31d41731369697ca38900b3a6a89d9a6e1ac8a8c (patch) | |
tree | a188ce2e610e93ea5f7da0bacd022b09856ba7f9 /engines/cge | |
parent | 951dfa2be973e5234df3fbca4d14e10f0dcd3c9c (diff) | |
download | scummvm-rg350-31d41731369697ca38900b3a6a89d9a6e1ac8a8c.tar.gz scummvm-rg350-31d41731369697ca38900b3a6a89d9a6e1ac8a8c.tar.bz2 scummvm-rg350-31d41731369697ca38900b3a6a89d9a6e1ac8a8c.zip |
CGE: Fix thumbnails display when a game is loaded.
Diffstat (limited to 'engines/cge')
-rw-r--r-- | engines/cge/cge.h | 2 | ||||
-rw-r--r-- | engines/cge/cge_main.cpp | 4 | ||||
-rw-r--r-- | engines/cge/snail.cpp | 23 | ||||
-rw-r--r-- | engines/cge/vga13h.cpp | 7 |
4 files changed, 20 insertions, 16 deletions
diff --git a/engines/cge/cge.h b/engines/cge/cge.h index 98f9ba8bc2..2ad66fc74a 100644 --- a/engines/cge/cge.h +++ b/engines/cge/cge.h @@ -41,7 +41,7 @@ namespace CGE { class Console; class Sprite; -#define kSavegameVersion 1 +#define kSavegameVersion 2 #define kSavegameStrSize 11 #define kPocketX 174 #define kPocketY 176 diff --git a/engines/cge/cge_main.cpp b/engines/cge/cge_main.cpp index 4b834c9800..aa332ed8ea 100644 --- a/engines/cge/cge_main.cpp +++ b/engines/cge/cge_main.cpp @@ -266,7 +266,7 @@ void CGEEngine::saveGame(int slotNumber, const Common::String &desc) { writeSavegameHeader(saveFile, header); // Write out the data of the savegame - syncGame(NULL, saveFile); + syncGame(NULL, saveFile, false); // Finish writing out game data saveFile->finalize(); @@ -324,7 +324,7 @@ void CGEEngine::syncGame(Common::SeekableReadStream *readStream, Common::WriteSt if (s.isSaving()) { // Loop through saving the sprite data for (Sprite *spr = _vga->_spareQ->first(); spr; spr = spr->_next) { - if ((spr->_ref >= 1000) && !s.err()) + if (!s.err()) spr->sync(s); } } else { diff --git a/engines/cge/snail.cpp b/engines/cge/snail.cpp index 7893b9d539..0e9d834d17 100644 --- a/engines/cge/snail.cpp +++ b/engines/cge/snail.cpp @@ -826,17 +826,26 @@ void CGEEngine::snBackPt(Sprite *spr, int stp) { void CGEEngine::snLevel(Sprite *spr, int lev) { debugC(1, kCGEDebugEngine, "CGEEngine::snLevel(spr, %d)", lev); - while (_lev < lev) { - _lev++; - spr = _vga->_spareQ->locate(100 + _lev); + assert((lev >= 0) && (lev < 5)); + + for (int i = 0; i < 5; i++) { + spr = _vga->_spareQ->locate(100 + i); if (spr) { - spr->backShow(true); - spr->_cave = 0; + if (i <= lev) { + spr->backShow(true); + spr->_cave = 0; + spr->_flags._hide = false; + } else { + spr->_flags._hide = true; + spr->_cave = -1; + } + } else { + warning("SPR not found! ref: %d", 100 + i); } } + + _lev = lev; _maxCave = _maxCaveArr[_lev]; - if (spr) - spr->_flags._hide = false; } void CGEEngine::snFlag(int indx, bool v) { diff --git a/engines/cge/vga13h.cpp b/engines/cge/vga13h.cpp index d510b98f45..3db504425f 100644 --- a/engines/cge/vga13h.cpp +++ b/engines/cge/vga13h.cpp @@ -99,13 +99,8 @@ BitmapPtr Sprite::shp() { return NULL; int i = e->_seq[_seqPtr]._now; - if (i >= _shpCnt) { - //char s[256]; - //sprintf(s, "Seq=%p ShpCnt=%d SeqPtr=%d Now=%d Next=%d", - // Seq, ShpCnt, SeqPtr, Seq[SeqPtr].Now, Seq[SeqPtr].Next); - //VGA::Exit(s, File); + if (i >= _shpCnt) error("Invalid PHASE in SPRITE::Shp() %s", _file); - } return e->_shpList[i]; } |