diff --git a/engines/director/score.cpp b/engines/director/score.cpp index 59e3f9e507a7..315d431fe4b6 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -59,6 +59,9 @@ Score::Score(Archive &movie) { debug("Mac name %s", _movieArchive->getName(MKTAG('M','C','N','M'), 0).c_str()); } + if (_movieArchive->hasResource(MKTAG('V','W','F','I'), 1024)) { + loadFileInfo(*_movieArchive->getResource(MKTAG('V','W','F','I'), 1024)); + } Common::Array vwci = _movieArchive->getResourceIDList(MKTAG('V','W','C','I')); if (vwci.size() > 0) { @@ -239,6 +242,14 @@ void Score::loadCastInfo(Common::SeekableReadStream &stream) { //TODO storage in array, and use this info } +void Score::loadFileInfo(Common::SeekableReadStream &stream) { + Common::Array fileInfoStrings = loadStrings(stream, _flags); + _script = fileInfoStrings[0]; + _changedBy = fileInfoStrings[1]; + _createdBy = fileInfoStrings[2]; + _directory = fileInfoStrings[3]; +} + Common::Array Score::loadStrings(Common::SeekableReadStream &stream, uint32 &entryType, bool hasHeader) { Common::Array strings; uint32 offset = 0; @@ -251,7 +262,7 @@ Common::Array Score::loadStrings(Common::SeekableReadStream &str } uint16 count = stream.readUint16BE(); - offset += count * 2 + 16; //positions info + header info + offset += (count + 1) * 4 + 2; //positions info + uint16 count uint32 startPos = stream.readUint32BE() + offset; for (uint16 i = 0; i < count; i++) { Common::String entryString; diff --git a/engines/director/score.h b/engines/director/score.h index b8312df5dcb2..e93b6ba9510c 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -206,6 +206,7 @@ class Score { void loadLabels(Common::SeekableReadStream &stream); void loadActions(Common::SeekableReadStream &stream); void loadCastInfo(Common::SeekableReadStream &stream); + void loadFileInfo(Common::SeekableReadStream &stream); Common::Array loadStrings(Common::SeekableReadStream &stream, uint32 &entryType, bool hasHeader = true); public: Common::Array _frames; @@ -216,6 +217,10 @@ class Score { private: uint16 _versionMinor; uint16 _versionMajor; + Common::String _createdBy; + Common::String _changedBy; + Common::String _script; + Common::String _directory; byte _currentFrameRate; uint16 _castArrayStart; uint16 _currentFrame;