[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