[Scummvm-git-logs] scummvm master -> 7df744c291e5fcf5dc7afd3b21189c2c56810f8e

sev- sev at scummvm.org
Tue Aug 30 10:13:48 CEST 2016


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

Summary:
736f5e61db DIRECTOR: Fix archive scanning at the start
c207d703fe DIRECTOR: Fixed shared cast loading
7df744c291 DIRECTOR: Fix class initialization


Commit: 736f5e61db244a62c03eb1dfcfa3786f4005255a
    https://github.com/scummvm/scummvm/commit/736f5e61db244a62c03eb1dfcfa3786f4005255a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-30T09:46:34+02:00

Commit Message:
DIRECTOR: Fix archive scanning at the start

Changed paths:
    engines/director/archive.cpp
    engines/director/director.cpp



diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 1b68649..4d85d33 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -29,10 +29,13 @@
 namespace Director {
 
 Archive *DirectorEngine::createArchive() {
-	if (getVersion() < 4) {
-		return new RIFFArchive();
+	if (getPlatform() == Common::kPlatformMacintosh) {
+		if (getVersion() < 4)
+			return new MacArchive();
+		else
+			return new RIFXArchive();
 	} else {
-		return new RIFXArchive();
+		return new RIFFArchive();
 	}
 }
 
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index d03236e..f868c9a 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -142,13 +142,13 @@ Common::HashMap<Common::String, Score *> DirectorEngine::loadMMMNames(Common::St
 		for (Common::FSList::const_iterator i = movies.begin(); i != movies.end(); ++i) {
 			debugC(2, kDebugLoading, "File: %s", i->getName().c_str());
 			if (Common::matchString(i->getName().c_str(), sharedMMMname, true)) {
-				loadSharedCastsFrom(i->getPath());
+				loadSharedCastsFrom(i->getName());
 				continue;
 			}
 
 			Archive *arc = createArchive();
 
-			arc->openFile(i->getPath());
+			arc->openFile(i->getName());
 			Score *sc = new Score(this, arc);
 			nameMap[sc->getMacName()] = sc;
 		}


Commit: c207d703fea29f9630e4776b14d78eb8138b1aa3
    https://github.com/scummvm/scummvm/commit/c207d703fea29f9630e4776b14d78eb8138b1aa3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-30T09:55:20+02:00

Commit Message:
DIRECTOR: Fixed shared cast loading

Changed paths:
    engines/director/archive.cpp
    engines/director/director.cpp
    engines/director/score.cpp
    engines/director/score.h



diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 4d85d33..5b22b45 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -196,21 +196,22 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
 
 	shardcst->openFile(filename);
 
+	_sharedDIB = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>;
+	_sharedSTXT = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>;
+	_sharedSound = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>;
+	_sharedBMP = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>;
+
 	Score *castScore = new Score(this, shardcst);
-	Common::Array<uint16> cast = shardcst->getResourceIDList(MKTAG('V','W','C','R'));
 
-	if (cast.size() == 1) {
-		for (Common::Array<uint16>::iterator iterator = cast.begin(); iterator != cast.end(); ++iterator) {
-			debugC(3, kDebugLoading, "Shared VWCR %d", *iterator);
-			castScore->loadCastData(*shardcst->getResource(MKTAG('V','W','C','R'), *iterator));
-			*_sharedCasts = castScore->_casts;
-		}
-	} else {
-		error("Incorrect number of VWCR in shared cast '%s': %d", filename.c_str(), cast.size());
-	}
+	castScore->loadConfig(*shardcst->getResource(MKTAG('V','W','C','F'), 1024));
+	castScore->loadCastData(*shardcst->getResource(MKTAG('V','W','C','R'), 1024));
+
+	_sharedCasts = &castScore->_casts;
 
 	Common::Array<uint16> dib = shardcst->getResourceIDList(MKTAG('D','I','B',' '));
 	if (dib.size() != 0) {
+		debugC(3, kDebugLoading, "Loading %d DIBs", dib.size());
+
 		for (Common::Array<uint16>::iterator iterator = dib.begin(); iterator != dib.end(); ++iterator) {
 			debugC(3, kDebugLoading, "Shared DIB %d", *iterator);
 			_sharedDIB->setVal(*iterator, shardcst->getResource(MKTAG('D','I','B',' '), *iterator));
@@ -219,6 +220,8 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
 
 	Common::Array<uint16> stxt = shardcst->getResourceIDList(MKTAG('S','T','X','T'));
 	if (stxt.size() != 0) {
+		debugC(3, kDebugLoading, "Loading %d STXTs", stxt.size());
+
 		for (Common::Array<uint16>::iterator iterator = stxt.begin(); iterator != stxt.end(); ++iterator) {
 			debugC(3, kDebugLoading, "Shared STXT %d", *iterator);
 			_sharedSTXT->setVal(*iterator, shardcst->getResource(MKTAG('S','T','X','T'), *iterator));
@@ -227,16 +230,16 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
 
 	Common::Array<uint16> bmp = shardcst->getResourceIDList(MKTAG('B','I','T','D'));
 	if (bmp.size() != 0) {
+		debugC(3, kDebugLoading, "Loading %d BITDs", bmp.size());
 		for (Common::Array<uint16>::iterator iterator = bmp.begin(); iterator != bmp.end(); ++iterator) {
 			_sharedBMP->setVal(*iterator, shardcst->getResource(MKTAG('B','I','T','D'), *iterator));
 		}
 	}
 
 	Common::Array<uint16> sound = shardcst->getResourceIDList(MKTAG('S','N','D',' '));
-
 	if (stxt.size() != 0) {
-		Common::Array<uint16>::iterator iterator;
-		for (iterator = sound.begin(); iterator != sound.end(); ++iterator) {
+		debugC(3, kDebugLoading, "Loading %d SNDs", sound.size());
+		for (Common::Array<uint16>::iterator iterator = sound.begin(); iterator != sound.end(); ++iterator) {
 			_sharedSound->setVal(*iterator, shardcst->getResource(MKTAG('S','N','D',' '), *iterator));
 		}
 	}
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index f868c9a..1e46d2b 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -47,10 +47,6 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
 	syncSoundSettings();
 
 	_sharedCasts = nullptr;
-	_sharedSound = nullptr;
-	_sharedBMP = nullptr;
-	_sharedSTXT = nullptr;
-	_sharedDIB = nullptr;
 
 	_currentScore = nullptr;
 	_soundManager = nullptr;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 8278c28..6d6d022 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -272,6 +272,8 @@ void Score::readVersion(uint32 rid) {
 }
 
 void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream) {
+	debugC(1, kDebugLoading, "Score::loadCastData(). start: %d, end: %d", _castArrayStart, _castArrayEnd);
+
 	for (uint16 id = _castArrayStart; id <= _castArrayEnd; id++) {
 		byte size = stream.readByte();
 		if (size == 0)
diff --git a/engines/director/score.h b/engines/director/score.h
index 35e6f97..a9ac1f9 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -183,6 +183,7 @@ public:
 	void startLoop();
 	void processEvents();
 	Archive *getArchive() const { return _movieArchive; };
+	void loadConfig(Common::SeekableSubReadStreamEndian &stream);
 	void loadCastData(Common::SeekableSubReadStreamEndian &stream);
 	void setCurrentFrame(uint16 frameId) { _currentFrame = frameId; }
 	Common::String getMacName() const { return _macName; }
@@ -190,7 +191,6 @@ public:
 private:
 	void update();
 	void readVersion(uint32 rid);
-	void loadConfig(Common::SeekableSubReadStreamEndian &stream);
 	void loadPalette(Common::SeekableSubReadStreamEndian &stream);
 	void loadFrames(Common::SeekableSubReadStreamEndian &stream);
 	void loadLabels(Common::SeekableSubReadStreamEndian &stream);


Commit: 7df744c291e5fcf5dc7afd3b21189c2c56810f8e
    https://github.com/scummvm/scummvm/commit/7df744c291e5fcf5dc7afd3b21189c2c56810f8e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-30T10:13:09+02:00

Commit Message:
DIRECTOR: Fix class initialization

Changed paths:
    engines/director/director.cpp



diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 1e46d2b..40796f0 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -54,6 +54,12 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
 	_currentPaletteLength = 0;
 	_lingo = nullptr;
 
+	_sharedCasts = nullptr;
+	_sharedSound = nullptr;
+	_sharedBMP = nullptr;
+	_sharedSTXT = nullptr;
+	_sharedDIB = nullptr;
+
 	_mainArchive = nullptr;
 	_macBinary = nullptr;
 





More information about the Scummvm-git-logs mailing list