[Scummvm-git-logs] scummvm master -> 82211302c04f8320953d568b912052e3c6d3f11c

sev- sev at scummvm.org
Sun Nov 13 01:15:18 CET 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
82211302c0 DIRECTOR: More work on Cast loading in D4


Commit: 82211302c04f8320953d568b912052e3c6d3f11c
    https://github.com/scummvm/scummvm/commit/82211302c04f8320953d568b912052e3c6d3f11c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-11-13T01:15:12+01:00

Commit Message:
DIRECTOR: More work on Cast loading in D4

Changed paths:
    engines/director/frame.cpp
    engines/director/resource.cpp
    engines/director/score.cpp
    engines/director/score.h



diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 6464943..cccfb37 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -559,6 +559,8 @@ void Frame::renderSprites(Graphics::ManagedSurface &surface, bool renderTrail) {
 				continue;
 			}
 
+			assert(_sprites[i]->_cast);
+
 			uint32 regX = static_cast<BitmapCast *>(_sprites[i]->_cast)->regX;
 			uint32 regY = static_cast<BitmapCast *>(_sprites[i]->_cast)->regY;
 			uint32 rectLeft = static_cast<BitmapCast *>(_sprites[i]->_cast)->initialRect.left;
@@ -646,9 +648,10 @@ Image::ImageDecoder *Frame::getImageFrom(uint16 spriteId) {
 	}
 
 	if (_vm->_currentScore->getArchive()->hasResource(MKTAG('B', 'I', 'T', 'D'), imgId)) {
+		warning("************");
 		Common::SeekableReadStream *pic = _vm->_currentScore->getArchive()->getResource(MKTAG('B', 'I', 'T', 'D'), imgId);
 
-		if (_vm->getVersion() < 4) {
+		if (_vm->getVersion() <= 4) {
 			BitmapCast *bc = static_cast<BitmapCast *>(_vm->_currentScore->_casts[spriteId]);
 			int w = bc->initialRect.width(), h = bc->initialRect.height();
 
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 54ab219..2f8ef3e 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -220,6 +220,8 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
 			castScore->loadCastData(*shardcst->getResource(MKTAG('C','A','S','t'), *iterator), *iterator);
 	}
 
+	castScore->setSpriteCasts();
+
 	_sharedCasts = &castScore->_casts;
 
 	Common::Array<uint16> dib = shardcst->getResourceIDList(MKTAG('D','I','B',' '));
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 1c78745..f145364 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -381,7 +381,9 @@ void Score::loadCastDataVWCR(Common::SeekableSubReadStreamEndian &stream) {
 			break;
 		}
 	}
+}
 
+void Score::setSpriteCasts() {
 	// Set cast pointers to sprites
 	for (uint16 i = 0; i < _frames.size(); i++) {
 		for (uint16 j = 0; j < _frames[i]->_sprites.size(); j++) {
diff --git a/engines/director/score.h b/engines/director/score.h
index 9f60883..49e4f35 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -72,6 +72,7 @@ public:
 	int getCurrentFrame() { return _currentFrame; }
 	Common::String getMacName() const { return _macName; }
 	Sprite *getSpriteById(uint16 id);
+	void setSpriteCasts();
 
 private:
 	void update();





More information about the Scummvm-git-logs mailing list