[Scummvm-git-logs] scummvm master -> 04c98c8e0c744f7ed64e1a373bc55a9bd1ffc6db

sev- sev at scummvm.org
Fri Apr 3 23:43:54 UTC 2020


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:
52a467546b DIRECTOR: Drop '#' from SYMBOL value
56d7a1df17 Revert "DIRECTOR: Use reserve() instead of resize() for Arrays"
04c98c8e0c DIRECTOR: Preprocess sound command


Commit: 52a467546bb1bb02fde50fc98e5775c50b8688d5
    https://github.com/scummvm/scummvm/commit/52a467546bb1bb02fde50fc98e5775c50b8688d5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-04T01:29:46+02:00

Commit Message:
DIRECTOR: Drop '#' from SYMBOL value

Changed paths:
    engines/director/lingo/lingo-funcs.cpp
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/lingo.cpp


diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index be1e5909da..44d5049fe1 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -297,8 +297,8 @@ void Lingo::func_play(Datum &frame, Datum &movie) {
 
 	// play #done
 	if (frame.type == SYMBOL) {
-		if (!frame.u.s->equals("#done")) {
-			warning("Lingo::func_play: unknown symbol: %s", frame.u.s->c_str());
+		if (!frame.u.s->equals("done")) {
+			warning("Lingo::func_play: unknown symbol: #%s", frame.u.s->c_str());
 			return;
 		}
 		if (_vm->_movieStack.empty()) {	// No op if no nested movies
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index e3bac497d4..4ac26627d1 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1166,7 +1166,7 @@ YY_RULE_SETUP
 case 5:
 YY_RULE_SETUP
 #line 99 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
+{ count(); yylval.s = new Common::String(yytext + 1); return SYMBOL; }	// D3, skip '#'
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 4ee35f41a0..a076993c73 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -96,7 +96,7 @@ whitespace [ \t]
 ^{whitespace}+	{ count(); }
 [\t]+			{ count(); return ' '; }
 
-[#]{identifier}	{ count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
+[#]{identifier}	{ count(); yylval.s = new Common::String(yytext + 1); return SYMBOL; }	// D3, skip '#'
 
 after		{ count(); return tAFTER; }		// D3
 and			{ count(); return tAND; }
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 915423d063..0bab33b9f8 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -459,7 +459,7 @@ Common::String *Datum::toString() {
 		*s = *u.s;
 		break;
 	case SYMBOL:
-		*s = Common::String::format("%s", u.s->c_str());
+		*s = Common::String::format("#%s", u.s->c_str());
 		break;
 	case OBJECT:
 		*s = Common::String::format("#%s", u.s->c_str());


Commit: 56d7a1df173b0480e518f141688028500e5010ff
    https://github.com/scummvm/scummvm/commit/56d7a1df173b0480e518f141688028500e5010ff
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-04T01:38:28+02:00

Commit Message:
Revert "DIRECTOR: Use reserve() instead of resize() for Arrays"

This reverts commit a1cf5bf0eef1e3848666848e6e6b497d96dbaea2.

Changed paths:
    engines/director/frame.cpp
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 06c483bef7..4512f58f26 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -98,7 +98,7 @@ Frame::Frame(const Frame &frame) {
 
 	debugC(1, kDebugLoading, "Frame. action: %d transType: %d transDuration: %d", _actionId, _transType, _transDuration);
 
-	_sprites.reserve(_numChannels + 1);
+	_sprites.resize(_numChannels + 1);
 
 	for (uint16 i = 0; i <= _numChannels; i++) {
 		_sprites[i] = new Sprite(*frame._sprites[i]);
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 182ff9821d..a35e4eb8c2 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -274,7 +274,7 @@ void Lingo::initTheEntities() {
 	_objectEntityId = kTheObject;
 
 	TheEntity *e = entities;
-	_entityNames.reserve(kTheMaxTheEntityType);
+	_entityNames.resize(kTheMaxTheEntityType);
 
 	while (e->entity != kTheNOEntity) {
 		if (e->version <= _vm->getVersion()) {
@@ -287,7 +287,7 @@ void Lingo::initTheEntities() {
 	}
 
 	TheEntityField *f = fields;
-	_fieldNames.reserve(kTheMaxTheFieldType);
+	_fieldNames.resize(kTheMaxTheFieldType);
 
 	while (f->entity != kTheNOEntity) {
 		if (f->version <= _vm->getVersion()) {


Commit: 04c98c8e0c744f7ed64e1a373bc55a9bd1ffc6db
    https://github.com/scummvm/scummvm/commit/04c98c8e0c744f7ed64e1a373bc55a9bd1ffc6db
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-04T01:43:21+02:00

Commit Message:
DIRECTOR: Preprocess sound command

Changed paths:
    engines/director/lingo/lingo-preprocessor.cpp


diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 328cfc7105..b7b10e8f16 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -27,6 +27,7 @@ namespace Director {
 
 Common::String preprocessReturn(Common::String in);
 Common::String preprocessPlay(Common::String in);
+Common::String preprocessSound(Common::String in);
 
 bool isspec(char c) {
 	return strchr("-+*/%%^:,()><&[]=", c) != NULL;
@@ -165,6 +166,7 @@ Common::String Lingo::codePreprocessor(const char *s, bool simple) {
 
 		res1 = preprocessReturn(res1);
 		res1 = preprocessPlay(res1);
+		res1 = preprocessSound(res1);
 
 		res += res1;
 
@@ -386,8 +388,8 @@ Common::String preprocessPlay(Common::String in) {
 
 		debugC(2, kDebugLingoParse, "PLAY: nexttok: %s", next.c_str());
 
-		if (next.equals("done")) {
-			res += "#"; // Turn it into SYMBOL
+		if (next.equalsIgnoreCase("done")) {
+			res += '#'; // Turn it into SYMBOL
 		}
 
 		res += *ptr++; // We advance one character, so 'one' is left
@@ -402,4 +404,39 @@ Common::String preprocessPlay(Common::String in) {
 	return res;
 }
 
+Common::String preprocessSound(Common::String in) {
+	Common::String res, next;
+	const char *ptr = in.c_str();
+	const char *beg = ptr;
+
+	while ((ptr = strcasestr(beg, "sound")) != NULL) {
+		ptr += 6; // end of 'sound'
+		res += Common::String(beg, ptr);
+
+		next = nexttok(ptr);
+
+		debugC(2, kDebugLingoParse, "SOUND: nexttok: %s", next.c_str());
+
+		if (next.equalsIgnoreCase("close") ||
+				next.equalsIgnoreCase("fadeIn") ||
+				next.equalsIgnoreCase("fadeOut") ||
+				next.equalsIgnoreCase("playFile") ||
+				next.equalsIgnoreCase("stop")) {
+			res += '#'; // Turn it into SYMBOL
+		}
+
+		res += next;
+		res += ',';
+		ptr += next.size();
+		beg = ptr;
+	}
+
+	res += Common::String(beg);
+
+	if (in.size() != res.size())
+		debugC(2, kDebugLingoParse, "SOUND: in: %s\nout: %s", in.c_str(), res.c_str());
+
+	return res;
+}
+
 } // End of namespace Director




More information about the Scummvm-git-logs mailing list