diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/voyeur/files.cpp | 21 | ||||
-rw-r--r-- | engines/voyeur/files.h | 11 | ||||
-rw-r--r-- | engines/voyeur/graphics.h | 1 |
3 files changed, 32 insertions, 1 deletions
diff --git a/engines/voyeur/files.cpp b/engines/voyeur/files.cpp index 343485edf8..811bdf600b 100644 --- a/engines/voyeur/files.cpp +++ b/engines/voyeur/files.cpp @@ -379,7 +379,9 @@ void BoltFile::initViewPort() { } void BoltFile::initViewPortList() { - error("TODO: initViewPortList not implemented"); + initDefault(); + _state._curMemberPtr->_viewPortListResource = new ViewPortListResource( + _state, _state._curMemberPtr->_data); } void BoltFile::initFontInfo() { @@ -435,6 +437,7 @@ BoltEntry::~BoltEntry() { delete[] _data; delete _picResource; delete _viewPortResource; + delete _viewPortListResource; } void BoltEntry::load() { @@ -555,4 +558,20 @@ ViewPortResource::ViewPortResource(BoltFilesState &state, const byte *src) { _fn3 = &BoltFile::addRectNoSaveBack; } +/*------------------------------------------------------------------------*/ + +ViewPortListResource::ViewPortListResource(BoltFilesState &state, const byte *src) { + uint32 *idP = (uint32 *)&src[0]; + uint count = READ_LE_UINT32(idP++); + + for (uint i = 0; i < count; ++i, ++idP) { + uint32 id = READ_LE_UINT32(idP); + _entries.push_back(NULL); + state._curLibPtr->resolveIt(id, &_entries[_entries.size() - 1]); + } + + state._vm->_graphicsManager._vPort = &_entries[0]; + state._curLibPtr->resolveIt(READ_LE_UINT32(&src[4]), &_field4); +} + } // End of namespace Voyeur diff --git a/engines/voyeur/files.h b/engines/voyeur/files.h index c8c480768a..47ef5a1f46 100644 --- a/engines/voyeur/files.h +++ b/engines/voyeur/files.h @@ -36,6 +36,7 @@ class BoltGroup; class BoltEntry; class PictureResource; class ViewPortResource; +class ViewPortListResource; #define DECOMPRESS_SIZE 0x7000 @@ -161,6 +162,7 @@ public: PictureResource *_picResource; ViewPortResource *_viewPortResource; + ViewPortListResource *_viewPortListResource; public: BoltEntry(Common::SeekableReadStream *f); virtual ~BoltEntry(); @@ -220,6 +222,15 @@ public: virtual ~ViewPortResource() {} }; +class ViewPortListResource { +public: + byte *_field4; + Common::Array<byte *> _entries; + + ViewPortListResource(BoltFilesState &state, const byte *src); + virtual ~ViewPortListResource() {} +}; + } // End of namespace Voyeur #endif /* VOYEUR_FILES_H */ diff --git a/engines/voyeur/graphics.h b/engines/voyeur/graphics.h index 72b5047b29..152ce00d9e 100644 --- a/engines/voyeur/graphics.h +++ b/engines/voyeur/graphics.h @@ -49,6 +49,7 @@ public: byte *_backgroundPage; int _SVGAPage; int _SVGAMode; + byte **_vPort; private: static void fadeIntFunc(); static void vDoFadeInt(); |