diff options
| -rw-r--r-- | engines/director/score.cpp | 28 | ||||
| -rw-r--r-- | engines/director/score.h | 4 | 
2 files changed, 31 insertions, 1 deletions
| diff --git a/engines/director/score.cpp b/engines/director/score.cpp index 315d431fe4..6d6f295e83 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -63,6 +63,10 @@ Score::Score(Archive &movie) {  		loadFileInfo(*_movieArchive->getResource(MKTAG('V','W','F','I'), 1024));  	} +	if (_movieArchive->hasResource(MKTAG('V','W','F','M'), 1024)) { +		loadFontMap(*_movieArchive->getResource(MKTAG('V','W','F','M'), 1024)); +	} +  	Common::Array<uint16> vwci = _movieArchive->getResourceIDList(MKTAG('V','W','C','I'));  	if (vwci.size() > 0) {  		Common::Array<uint16>::iterator iterator; @@ -284,6 +288,30 @@ Common::Array<Common::String> Score::loadStrings(Common::SeekableReadStream &str  	return strings;  } +void Score::loadFontMap(Common::SeekableReadStream &stream) { +	uint16 count = stream.readUint16BE(); +	uint32 offset = (count * 2) + 2; +	uint16 currentRawPosition = offset; + +	for (uint16 i = 0; i < count; i++) { +		uint16 id = stream.readUint16BE(); +		uint32 positionInfo = stream.pos(); + +		stream.seek(currentRawPosition); + +		uint16 size = stream.readByte(); +		Common::String font; + +		for (uint16 k = 0; k < size; k++) { +			font += stream.readByte(); +		} + +		_fontMap[id] = font; +		currentRawPosition = stream.pos(); +		stream.seek(positionInfo); +	} +} +  BitmapCast::BitmapCast(Common::SeekableReadStream &stream) {  	/*byte flags = */ stream.readByte();  	uint16 someFlaggyThing = stream.readUint16BE(); diff --git a/engines/director/score.h b/engines/director/score.h index e93b6ba951..eea9bb955d 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -207,13 +207,14 @@ private:      void loadActions(Common::SeekableReadStream &stream);      void loadCastInfo(Common::SeekableReadStream &stream);      void loadFileInfo(Common::SeekableReadStream &stream); +    void loadFontMap(Common::SeekableReadStream &stream);      Common::Array<Common::String> loadStrings(Common::SeekableReadStream &stream, uint32 &entryType, bool hasHeader = true);  public:      Common::Array<Frame *> _frames;      Common::HashMap<int, Cast *> _casts;      Common::HashMap<uint16, Common::String> _labels;      Common::HashMap<uint16, Common::String> _actions; - +    Common::HashMap<uint16, Common::String> _fontMap;  private:      uint16 _versionMinor;      uint16 _versionMajor; @@ -225,6 +226,7 @@ private:      uint16 _castArrayStart;      uint16 _currentFrame;      uint32 _nextFrameTime; +    uint32 _flags;      bool _stopPlay;      uint16 _castArrayEnd;      Common::Rect _movieRect; | 
