[Scummvm-cvs-logs] scummvm master -> ff628a6b627b098e51d2f458188c3fc3f3ea07b1

sev- sev at scummvm.org
Thu Aug 25 18:16:28 CEST 2016


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

Summary:
7e0899f5d4 DIRECTOR: Start executing frame scripts
6e8e0845a1 DIRECTOR: Fix font parameter reading
1a5ad0de5a DIRECTOR: Fix warning
ff628a6b62 DIRECTOR: Do not try to compile all text resources except first one


Commit: 7e0899f5d4d3876da5aa9a6b724c16e2e08f257b
    https://github.com/scummvm/scummvm/commit/7e0899f5d4d3876da5aa9a6b724c16e2e08f257b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-25T18:16:15+02:00

Commit Message:
DIRECTOR: Start executing frame scripts

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



diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 5297380..3b0456d 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -248,11 +248,31 @@ void Lingo::executeScript(ScriptType type, uint16 id) {
 	cleanLocalVars();
 }
 
+ScriptType Lingo::event2script(LEvent ev) {
+	if (_vm->getVersion() < 4) {
+		switch (ev) {
+		//case kEventStartMovie: // We are precompiling it now
+		//	return kMovieScript;
+		case kEventEnterFrame:
+			return kFrameScript;
+		default:
+			return kNoneScript;
+		}
+	}
+
+	return kNoneScript;
+}
+
 void Lingo::processEvent(LEvent event, int entityId) {
 	if (!_eventHandlerTypes.contains(event))
 		error("processEvent: Unknown event %d for entity %d", event, entityId);
 
-	debug(2, "STUB: processEvent(%s) for %d", _eventHandlerTypes[event], entityId);
+	ScriptType st = event2script(event);
+
+	if (st != kNoneScript)
+		executeScript(st, entityId + 1);
+	else
+		debug(2, "STUB: processEvent(%s) for %d", _eventHandlerTypes[event], entityId);
 }
 
 int Lingo::alignTypes(Datum &d1, Datum &d2) {
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index a921f49..4dd0041 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -176,6 +176,8 @@ public:
 	void printStack(const char *s);
 	Common::String decodeInstruction(int pc, int *newPC = NULL);
 
+	ScriptType event2script(LEvent ev);
+
 	void processEvent(LEvent event, int entityId);
 
 	void initBuiltIns();
diff --git a/engines/director/score.h b/engines/director/score.h
index 11f885d..8ddbed0 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -58,6 +58,7 @@ enum ScriptType {
 	kMovieScript = 0,
 	kSpriteScript = 1,
 	kFrameScript = 2,
+	kNoneScript = -1,
 	kMaxScriptType = 2
 };
 


Commit: 6e8e0845a16fbe54dffca84d86cc187b0b429557
    https://github.com/scummvm/scummvm/commit/6e8e0845a16fbe54dffca84d86cc187b0b429557
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-25T18:16:15+02:00

Commit Message:
DIRECTOR: Fix font parameter reading

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index c4294fd..b3f2e02 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -664,8 +664,9 @@ TextCast::TextCast(Common::SeekableSubReadStreamEndian &stream) {
 	textType = static_cast<TextType>(stream.readByte());
 	textAlign = static_cast<TextAlignType>(stream.readUint16());
 	stream.skip(6); //palinfo
-	//for now, just supposition
-	fontId = stream.readUint32();
+
+	int t = stream.readUint32();
+	assert(t == 0); // So far we saw only 0 here
 
 	initialRect = Score::readRect(stream);
 	textShadow = static_cast<SizeType>(stream.readByte());
@@ -676,8 +677,11 @@ TextCast::TextCast(Common::SeekableSubReadStreamEndian &stream) {
 		textFlags.push_back(kTextFlagAutoTab);
 	if (flags & 0x4)
 		textFlags.push_back(kTextFlagDoNotWrap);
-	//again supposition
-	fontSize = stream.readUint16();
+
+	//TODO: FIXME: guesswork
+	fontId = stream.readByte();
+	fontSize = stream.readByte();
+
 	modified = 0;
 }
 


Commit: 1a5ad0de5ae4ae0b4ea2ed3e3415ae4daef50797
    https://github.com/scummvm/scummvm/commit/1a5ad0de5ae4ae0b4ea2ed3e3415ae4daef50797
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-25T18:16:15+02:00

Commit Message:
DIRECTOR: Fix warning

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b3f2e02..75d8226 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -439,6 +439,8 @@ void Score::dumpScript(const char *script, ScriptType type, uint16 id) {
 	char buf[256];
 
 	switch (type) {
+	case kNoneScript:
+		error("Incorrect dumpScript() call");
 	case kFrameScript:
 		typeName = "frame";
 		break;


Commit: ff628a6b627b098e51d2f458188c3fc3f3ea07b1
    https://github.com/scummvm/scummvm/commit/ff628a6b627b098e51d2f458188c3fc3f3ea07b1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-25T18:16:15+02:00

Commit Message:
DIRECTOR: Do not try to compile all text resources except first one

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 75d8226..ea890b6 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -160,11 +160,7 @@ void Score::loadArchive() {
 	Common::Array<uint16> stxt = _movieArchive->getResourceIDList(MKTAG('S','T','X','T'));
 
 	if (stxt.size() > 0) {
-		Common::Array<uint16>::iterator iterator;
-
-		for (iterator = stxt.begin(); iterator != stxt.end(); ++iterator) {
-			loadScriptText(*_movieArchive->getResource(MKTAG('S','T','X','T'), *iterator));
-		}
+		loadScriptText(*_movieArchive->getResource(MKTAG('S','T','X','T'), *stxt.begin()));
 	}
 }
 






More information about the Scummvm-git-logs mailing list