diff options
author | Paul Gilbert | 2014-03-08 08:59:10 -0500 |
---|---|---|
committer | Paul Gilbert | 2014-03-08 08:59:10 -0500 |
commit | 0f214e4c9d72d088ccf088496710b20576ec73f5 (patch) | |
tree | f70f9f0c78159885dae2fff419fe7023ef10a520 | |
parent | 8d3857c0536e47a6a03497346424c111b5bebd7b (diff) | |
download | scummvm-rg350-0f214e4c9d72d088ccf088496710b20576ec73f5.tar.gz scummvm-rg350-0f214e4c9d72d088ccf088496710b20576ec73f5.tar.bz2 scummvm-rg350-0f214e4c9d72d088ccf088496710b20576ec73f5.zip |
MADS: Fix for loading animation data
-rw-r--r-- | engines/mads/animation.cpp | 7 | ||||
-rw-r--r-- | engines/mads/compression.h | 10 |
2 files changed, 12 insertions, 5 deletions
diff --git a/engines/mads/animation.cpp b/engines/mads/animation.cpp index 3508631690..90f1331d92 100644 --- a/engines/mads/animation.cpp +++ b/engines/mads/animation.cpp @@ -207,10 +207,11 @@ void Animation::load(MSurface &depthSurface, InterfaceSurface &interfaceSurface, for (int i = 0; i < _header._spriteSetsCount; ++i) _spriteListIndexes.push_back(-1); + int streamIndex = 1; _messages.clear(); if (_header._messagesCount > 0) { // Chunk 2: Following is a list of any messages for the animation - Common::SeekableReadStream *msgStream = madsPack.getItemStream(1); + Common::SeekableReadStream *msgStream = madsPack.getItemStream(streamIndex++); for (int i = 0; i < _header._messagesCount; ++i) { AnimMessage rec; @@ -224,7 +225,7 @@ void Animation::load(MSurface &depthSurface, InterfaceSurface &interfaceSurface, _frameEntries.clear(); if (_header._frameEntriesCount > 0) { // Chunk 3: animation frame info - Common::SeekableReadStream *frameStream = madsPack.getItemStream(2); + Common::SeekableReadStream *frameStream = madsPack.getItemStream(streamIndex++); for (int i = 0; i < _header._frameEntriesCount; i++) { AnimFrameEntry rec; @@ -238,7 +239,7 @@ void Animation::load(MSurface &depthSurface, InterfaceSurface &interfaceSurface, _miscEntries.clear(); if (_header._miscEntriesCount > 0) { // Chunk 4: Misc Data - Common::SeekableReadStream *miscStream = madsPack.getItemStream(3); + Common::SeekableReadStream *miscStream = madsPack.getItemStream(streamIndex++); for (int i = 0; i < _header._miscEntriesCount; ++i) { AnimMiscEntry rec; diff --git a/engines/mads/compression.h b/engines/mads/compression.h index bf690dcc46..aa1f0d9bdc 100644 --- a/engines/mads/compression.h +++ b/engines/mads/compression.h @@ -54,9 +54,15 @@ public: ~MadsPack(); int getCount() const { return _count; } - MadsPackEntry &getItem(int index) const { return _items[index]; } - MadsPackEntry &operator[](int index) const { return _items[index]; } + MadsPackEntry &getItem(int index) const { + assert(index < _count); + return _items[index]; } + MadsPackEntry &operator[](int index) const { + assert(index < _count); + return _items[index]; + } Common::MemoryReadStream *getItemStream(int index) { + assert(index < _count); return new Common::MemoryReadStream(_items[index].data, _items[index].size, DisposeAfterUse::NO); } |