diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/parallaction/disk_br.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/parallaction/disk_br.cpp b/engines/parallaction/disk_br.cpp index 9fa3e7a701..21e73a8f09 100644 --- a/engines/parallaction/disk_br.cpp +++ b/engines/parallaction/disk_br.cpp @@ -602,10 +602,20 @@ Frames* AmigaDisk_br::loadFrames(const char* name) { GfxObj* AmigaDisk_br::loadTalk(const char *name) { debugC(1, kDebugDisk, "AmigaDisk_br::loadTalk '%s'", name); + Common::SeekableReadStream *stream = openFile("talks/" + Common::String(name), ".tal"); - GfxObj* obj = new GfxObj(0, createSprites(*stream)); + + // talk position is set to (0,0), because talks are always displayed at + // absolute coordinates, set in the dialogue manager. The original used + // to null out coordinates every time they were needed. We do it better! + Sprites *spr = createSprites(*stream); + for (int i = 0; i < spr->getNum(); i++) { + spr->_sprites[i].x = 0; + spr->_sprites[i].y = 0; + } + delete stream; - return obj; + return new GfxObj(0, spr, name); } Font* AmigaDisk_br::loadFont(const char* name) { |