aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/scene_lol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/scene_lol.cpp')
-rw-r--r--engines/kyra/scene_lol.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp
index fcedec1a76..da839dbf8b 100644
--- a/engines/kyra/scene_lol.cpp
+++ b/engines/kyra/scene_lol.cpp
@@ -345,14 +345,15 @@ uint8 *LoLEngine::getLevelShapes(int shapeIndex) {
if (_lvlShpNum <= shapeIndex)
return 0;
- uint32 offs = _lvlShpHeader[shapeIndex] + 2;
- _lvlShpFileHandle->seek(offs, 0);
+ _lvlShpFileHandle->seek(shapeIndex * 4 + 2, SEEK_SET);
+ uint32 offs = _lvlShpFileHandle->readUint32LE() + 2;
+ _lvlShpFileHandle->seek(offs, SEEK_SET);
uint8 tmp[16];
_lvlShpFileHandle->read(tmp, 16);
uint16 size = _screen->getShapeSize(tmp);
- _lvlShpFileHandle->seek(offs, 0);
+ _lvlShpFileHandle->seek(offs, SEEK_SET);
uint8 *res = new uint8[size];
_lvlShpFileHandle->read(res, size);
@@ -554,10 +555,6 @@ void LoLEngine::loadLevelShpDat(const char *shpFile, const char *datFile, bool f
_lvlShpFileHandle = _res->getFileStream(shpFile);
_lvlShpNum = _lvlShpFileHandle->readUint16LE();
- delete[] _lvlShpHeader;
- _lvlShpHeader = new uint32[_lvlShpNum];
- for (int i = 0; i < _lvlShpNum; i++)
- _lvlShpHeader[i] = _lvlShpFileHandle->readUint32LE();
Common::SeekableReadStream *s = _res->getFileStream(datFile);