[Scummvm-git-logs] scummvm master -> 6e727d58a1972dd3204ae7af58f63c5acea2230e
djsrv
dservilla at gmail.com
Wed Jul 8 19:21:39 UTC 2020
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:
a56f400e32 DIRECTOR: Add main stage
191ed3bc19 DIRECTOR: LINGO: Implement window list
27c02f3646 DIRECTOR: LINGO: c_open -> b_open
6e727d58a1 DIRECTOR: LINGO: Add missing include
Commit: a56f400e3298343ac347efef6fbaa5dbae71b99d
https://github.com/scummvm/scummvm/commit/a56f400e3298343ac347efef6fbaa5dbae71b99d
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-08T15:19:04-04:00
Commit Message:
DIRECTOR: Add main stage
Changed paths:
engines/director/castmember.cpp
engines/director/director.cpp
engines/director/director.h
engines/director/events.cpp
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-funcs.cpp
engines/director/lingo/lingo-the.cpp
engines/director/movie.h
engines/director/score.cpp
diff --git a/engines/director/castmember.cpp b/engines/director/castmember.cpp
index c5e4b6c8f3..54275597c3 100644
--- a/engines/director/castmember.cpp
+++ b/engines/director/castmember.cpp
@@ -156,7 +156,7 @@ void BitmapCastMember::createWidget() {
return;
}
- _widget = new Graphics::MacWidget(g_director->getStage(), 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, false);
+ _widget = new Graphics::MacWidget(g_director->getCurrentStage(), 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, false);
_widget->getSurface()->blitFrom(*_img->getSurface());
}
@@ -470,13 +470,13 @@ void TextCastMember::createWidget() {
switch (_type) {
case kCastText:
- _widget = new Graphics::MacText(g_director->getStage(), 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, getForeColor(), getBackColor(), _initialRect.width(), getAlignment(), 0, _borderSize, _gutterSize, _boxShadow, _textShadow);
+ _widget = new Graphics::MacText(g_director->getCurrentStage(), 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, getForeColor(), getBackColor(), _initialRect.width(), getAlignment(), 0, _borderSize, _gutterSize, _boxShadow, _textShadow);
((Graphics::MacText *)_widget)->draw();
break;
case kCastButton:
- _widget = new Graphics::MacButton(Graphics::MacButtonType(_buttonType), getAlignment(), g_director->getStage(), 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, getForeColor(), 0xff);
+ _widget = new Graphics::MacButton(Graphics::MacButtonType(_buttonType), getAlignment(), g_director->getCurrentStage(), 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, getForeColor(), 0xff);
((Graphics::MacButton *)_widget)->draw();
_widget->_focusable = true;
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 264ed8b2ec..18436b2f20 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -81,6 +81,7 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
_soundManager = nullptr;
_currentPalette = nullptr;
_currentPaletteLength = 0;
+ _mainStage = nullptr;
_currentStage = nullptr;
_lingo = nullptr;
@@ -133,16 +134,18 @@ Common::Error DirectorEngine::run() {
_wm = new Graphics::MacWindowManager(wmMode, &_director3QuickDrawPatterns);
_wm->setEngine(this);
- _currentStage = new Stage(_wm->getNextId(), false, false, false, _wm, this);
- *_currentStage->_refCount += 1;
+
+ _mainStage = new Stage(_wm->getNextId(), false, false, false, _wm, this);
+ *_mainStage->_refCount += 1;
if (!debugChannelSet(-1, kDebugDesktop))
- _currentStage->disableBorder();
+ _mainStage->disableBorder();
_surface = new Graphics::ManagedSurface;
_wm->setScreen(_surface);
- _wm->addWindowInitialized(_currentStage);
- _wm->setActiveWindow(_currentStage->getId());
+ _wm->addWindowInitialized(_mainStage);
+ _wm->setActiveWindow(_mainStage->getId());
+ _currentStage = _mainStage;
_lingo = new Lingo(this);
_soundManager = new DirectorSound(this);
diff --git a/engines/director/director.h b/engines/director/director.h
index 4cad6fb065..6b50e2e2db 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -142,7 +142,8 @@ public:
Graphics::MacWindowManager *getMacWindowManager() const { return _wm; }
Archive *getMainArchive() const;
Lingo *getLingo() const { return _lingo; }
- Stage *getStage() const { return _currentStage; }
+ Stage *getMainStage() const { return _mainStage; }
+ Stage *getCurrentStage() const { return _currentStage; }
Movie *getCurrentMovie() const;
Common::String getCurrentPath() const;
void setPalette(int id);
@@ -194,6 +195,7 @@ private:
uint16 _currentPaletteLength;
Lingo *_lingo;
+ Stage *_mainStage;
Stage *_currentStage;
Graphics::MacPatterns _director3Patterns;
diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index c46e8b07b2..0444f17a28 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -87,7 +87,7 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
if (_draggingSprite) {
Sprite *draggedSprite = sc->getSpriteById(_draggingSpriteId);
if (draggedSprite->_moveable) {
- pos = getStage()->getMousePos();
+ pos = getCurrentStage()->getMousePos();
sc->_channels[_draggingSpriteId]->addDelta(pos - _draggingSpritePos);
_draggingSpritePos = pos;
@@ -107,7 +107,7 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
m->_currentClickOnSpriteId = spriteId;
if (spriteId > 0 && sc->_channels[spriteId]->_sprite->shouldHilite())
- g_director->getStage()->invertChannel(sc->_channels[spriteId]);
+ g_director->getCurrentStage()->invertChannel(sc->_channels[spriteId]);
m->_lastEventTime = g_director->getMacTicks();
m->_lastClickTime = m->_lastEventTime;
@@ -129,7 +129,7 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
m->_currentMouseDownSpriteId = 0;
if (spriteId > 0 && sc->_channels[spriteId]->_sprite->shouldHilite())
- g_director->getStage()->invertChannel(sc->_channels[spriteId]);
+ g_director->getCurrentStage()->invertChannel(sc->_channels[spriteId]);
if (!(g_director->_wm->_mode & Graphics::kWMModeButtonDialogStyle))
m->_currentMouseDownSpriteId = spriteId;
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index ba81da1e89..f6dbd6e53f 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1743,7 +1743,7 @@ void LB::b_puppetTempo(int nargs) {
void LB::b_puppetTransition(int nargs) {
// puppetTransition whichTransition [, time] [, chunkSize] [, changeArea]
- Stage *stage = g_director->getStage();
+ Stage *stage = g_director->getCurrentStage();
uint16 duration = 250, area = 1, chunkSize = 1, type = 0;
if (nargs == 4) {
area = g_lingo->pop().asInt();
@@ -1798,7 +1798,7 @@ void LB::b_rollOver(int nargs) {
return;
}
- Common::Point pos = g_director->getStage()->getMousePos();
+ Common::Point pos = g_director->getCurrentStage()->getMousePos();
if (score->checkSpriteIntersection(arg, pos))
res.u.i = 1; // TRUE
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index c12e86ea04..6d27020a4a 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -227,7 +227,7 @@ void Lingo::func_goto(Datum &frame, Datum &movie) {
return;
}
- Stage *stage = _vm->getStage();
+ Stage *stage = _vm->getCurrentStage();
stage->_nextMovie.movie = cleanedFilename;
stage->getCurrentMovie()->getScore()->_stopPlay = true;
@@ -292,7 +292,7 @@ void Lingo::func_gotoprevious() {
void Lingo::func_play(Datum &frame, Datum &movie) {
MovieReference ref;
- Stage *stage = _vm->getStage();
+ Stage *stage = _vm->getCurrentStage();
// play #done
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index e824f7c58e..a9271d86d3 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -470,7 +470,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
break;
case kTheMouseCast:
{
- Common::Point pos = g_director->getStage()->getMousePos();
+ Common::Point pos = g_director->getCurrentStage()->getMousePos();
Score *sc = _vm->getCurrentMovie()->getScore();
uint16 spriteId = sc->getSpriteIDFromPos(pos);
d.type = INT;
@@ -492,11 +492,11 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
break;
case kTheMouseH:
d.type = INT;
- d.u.i = g_director->getStage()->getMousePos().x;
+ d.u.i = g_director->getCurrentStage()->getMousePos().x;
break;
case kTheMouseV:
d.type = INT;
- d.u.i = g_director->getStage()->getMousePos().y;
+ d.u.i = g_director->getCurrentStage()->getMousePos().y;
break;
case kTheMouseUp:
d.type = INT;
@@ -548,7 +548,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d = getTheSprite(id, field);
break;
case kTheStage:
- d = _vm->getStage();
+ d = _vm->getMainStage();
break;
case kTheStageBottom:
d.type = INT;
@@ -654,7 +654,7 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
}
break;
case kTheStageColor:
- g_director->getStage()->setStageColor(d.asInt());
+ g_director->getCurrentStage()->setStageColor(d.asInt());
break;
case kTheSprite:
setTheSprite(id, field, d);
@@ -839,7 +839,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
break;
case kTheCastNum:
if (d.asInt() != sprite->_castId) {
- g_director->getStage()->addDirtyRect(channel->getBbox());
+ g_director->getCurrentStage()->addDirtyRect(channel->getBbox());
sprite->setCast(d.asInt());
}
break;
@@ -862,7 +862,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
break;
case kTheHeight:
if (sprite->_puppet && sprite->_stretch) {
- g_director->getStage()->addDirtyRect(channel->getBbox());
+ g_director->getCurrentStage()->addDirtyRect(channel->getBbox());
sprite->_height = d.asInt();
}
break;
@@ -936,7 +936,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
break;
case kTheWidth:
if (sprite->_puppet && sprite->_stretch) {
- g_director->getStage()->addDirtyRect(channel->getBbox());
+ g_director->getCurrentStage()->addDirtyRect(channel->getBbox());
sprite->_width = d.asInt();
}
break;
diff --git a/engines/director/movie.h b/engines/director/movie.h
index f98cf2c15d..d76188e49f 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -53,7 +53,7 @@ public:
void setArchive(Archive *archive);
Archive *getArchive() const { return _movieArchive; };
Common::String getMacName() const { return _macName; }
- Stage *getStage() const { return _stage; }
+ Stage *getCurrentStage() const { return _stage; }
DirectorEngine *getVM() const { return _vm; }
Cast *getCast() const { return _cast; }
Cast *getSharedCast() const { return _sharedCast; }
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 37c605c941..1374ed6737 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -49,7 +49,7 @@ namespace Director {
Score::Score(Movie *movie) {
_movie = movie;
- _stage = movie->getStage();
+ _stage = movie->getCurrentStage();
_vm = _movie->getVM();
_lingo = _vm->getLingo();
Commit: 191ed3bc19f91f8ac903e88a19ac6370f3c63caf
https://github.com/scummvm/scummvm/commit/191ed3bc19f91f8ac903e88a19ac6370f3c63caf
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-08T15:19:04-04:00
Commit Message:
DIRECTOR: LINGO: Implement window list
Changed paths:
engines/director/director.cpp
engines/director/director.h
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 18436b2f20..fc5cf43061 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -82,6 +82,9 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
_currentPalette = nullptr;
_currentPaletteLength = 0;
_mainStage = nullptr;
+ _windowList = new Datum;
+ _windowList->type = ARRAY;
+ _windowList->u.farr = new DatumArray;
_currentStage = nullptr;
_lingo = nullptr;
diff --git a/engines/director/director.h b/engines/director/director.h
index 6b50e2e2db..1fd8de0aa1 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -196,6 +196,7 @@ private:
Lingo *_lingo;
Stage *_mainStage;
+ Datum *_windowList; // Lingo list
Stage *_currentStage;
Graphics::MacPatterns _director3Patterns;
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index f6dbd6e53f..d10a5f4b49 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -2175,10 +2175,25 @@ void LB::b_script(int nargs) {
void LB::b_window(int nargs) {
Datum d = g_lingo->pop();
+ Common::String windowName = d.asString();
+ DatumArray *windowList = g_lingo->_windowList.u.farr;
- warning("STUB: b_window");
+ for (uint i = 0; i < windowList->size(); i++) {
+ if ((*windowList)[i].type != OBJECT || (*windowList)[i].u.obj->getObjType() != kWindowObj)
+ continue;
+
+ Stage *window = static_cast<Stage *>((*windowList)[i].u.obj);
+ if (window->getName().equalsIgnoreCase(windowName)) {
+ g_lingo->push(window);
+ return;
+ }
+ }
- g_lingo->push(Datum());
+ Graphics::MacWindowManager *wm = g_director->getMacWindowManager();
+ Stage *window = new Stage(wm->getNextId(), false, false, false, wm, g_director);
+ window->setName(windowName);
+ windowList->push_back(window);
+ g_lingo->push(window);
}
void LB::b_numberofchars(int nargs) {
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index a9271d86d3..9fb5c9a1b7 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -577,6 +577,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.type = INT;
d.u.i = _vm->getMacTicks() - _vm->getCurrentMovie()->_lastTimerReset;
break;
+ case kTheWindowList:
+ d = g_lingo->_windowList;
+ break;
case kTheTimeoutScript:
d.type = STRING;
if (mainArchive->primaryEventHandlers.contains(kEventTimeout))
@@ -662,6 +665,13 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
case kTheTimeoutScript:
setPrimaryEventHandler(kEventTimeout, d.asString());
break;
+ case kTheWindowList:
+ if (d.type == ARRAY) {
+ g_lingo->_windowList = d;
+ } else {
+ warning("Lingo::setTheEntity(): kTheWindowList must be a list");
+ }
+ break;
default:
warning("Lingo::setTheEntity(): Unprocessed setting field \"%s\" of entity %s", field2str(field), entity2str(entity));
}
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 262422018f..836336173d 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -175,6 +175,9 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
_passEvent = false;
_perFrameHook = Datum();
+ _windowList.type = ARRAY;
+ _windowList.u.farr = new DatumArray;
+
initEventHandlerTypes();
initBuiltIns();
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 196af0244d..b1f9c171b8 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -464,6 +464,8 @@ public:
bool _passEvent;
Datum _perFrameHook;
+ Datum _windowList;
+
public:
void executeImmediateScripts(Frame *frame);
void executePerFrameHook(int frame, int subframe);
Commit: 27c02f364679665a266237adfb03b6b830a8923d
https://github.com/scummvm/scummvm/commit/27c02f364679665a266237adfb03b6b830a8923d
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-08T15:19:04-04:00
Commit Message:
DIRECTOR: LINGO: c_open -> b_open
open needs to be compiled to c_call for the open window method to work.
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-builtins.h
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.y
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index d10a5f4b49..03f7878345 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -133,7 +133,7 @@ static struct BuiltinProto {
{ "closeResFile", LB::b_closeResFile, 0, 1, false, 2, BLTIN }, // D2 c
{ "closeXlib", LB::b_closeXlib, 0, 1, false, 2, BLTIN }, // D2 c
{ "getNthFileNameInFolder",LB::b_getNthFileNameInFolder,2,2,true,4,FBLTIN },// D4 f
- // open // D2 c
+ { "open", LB::b_open, 1, 2, false, 2, BLTIN }, // D2 c
{ "openDA", LB::b_openDA, 1, 1, false, 2, BLTIN }, // D2 c
{ "openResFile", LB::b_openResFile, 1, 1, false, 2, BLTIN }, // D2 c
{ "openXlib", LB::b_openXlib, 1, 1, false, 2, BLTIN }, // D2 c
@@ -1039,6 +1039,12 @@ void LB::b_getNthFileNameInFolder(int nargs) {
g_lingo->push(Datum(0));
}
+void LB::b_open(int nargs) {
+ g_lingo->printSTUBWithArglist("b_open", nargs);
+
+ g_lingo->dropStack(nargs);
+}
+
void LB::b_openDA(int nargs) {
Datum d = g_lingo->pop();
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index e63f632432..a8abf9bb61 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -149,6 +149,7 @@ namespace LB {
void b_closeResFile(int nargs);
void b_closeXlib(int nargs);
void b_getNthFileNameInFolder(int nargs);
+ void b_open(int nargs);
void b_openDA(int nargs);
void b_openResFile(int nargs);
void b_openXlib(int nargs);
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 57a9986ec8..7eefcf88a2 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -107,7 +107,6 @@ static struct FuncDescr {
{ LC::c_objectpropassign,"c_objectpropassign","ss" }, // object, prop
{ LC::c_objectproppush, "c_objectproppush","ss" }, // object, prop
{ LC::c_of, "c_of", "" },
- { LC::c_open, "c_open", "" },
{ LC::c_or, "c_or", "" },
{ LC::c_play, "c_play", "" },
{ LC::c_printtop, "c_printtop", "" },
@@ -1525,13 +1524,6 @@ void LC::c_procret() {
}
}
-void LC::c_open() {
- Datum d2 = g_lingo->pop();
- Datum d1 = g_lingo->pop();
-
- warning("STUB: c_open(%s, %s)", d1.asString().c_str(), d2.asString().c_str());
-}
-
void LC::c_hilite() {
Datum first_char = g_lingo->pop();
Datum last_char = g_lingo->pop();
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 78c0eed3b4..b897f33f21 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -891,13 +891,13 @@ static const yytype_int16 yyrline[] =
623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
633, 634, 635, 636, 638, 639, 640, 641, 642, 643,
644, 645, 647, 650, 652, 653, 654, 655, 663, 664,
- 664, 665, 665, 666, 666, 667, 670, 673, 674, 676,
- 679, 683, 686, 690, 693, 704, 705, 706, 707, 711,
- 715, 720, 721, 723, 727, 731, 735, 735, 765, 765,
- 771, 772, 772, 778, 786, 792, 792, 794, 795, 796,
- 798, 799, 800, 802, 804, 812, 813, 814, 816, 817,
- 819, 821, 822, 823, 824, 826, 827, 829, 830, 832,
- 836, 840
+ 664, 665, 665, 666, 666, 667, 670, 673, 676, 680,
+ 683, 687, 690, 694, 697, 708, 709, 710, 711, 715,
+ 719, 724, 725, 727, 731, 735, 739, 739, 769, 769,
+ 775, 776, 776, 782, 790, 796, 796, 798, 799, 800,
+ 802, 803, 804, 806, 808, 816, 817, 818, 820, 821,
+ 823, 825, 826, 827, 828, 830, 831, 833, 834, 836,
+ 840, 844
};
#endif
@@ -3241,191 +3241,195 @@ yyreduce:
case 127:
#line 673 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(LC::c_open); }
-#line 3246 "engines/director/lingo/lingo-gr.cpp"
+ {
+ Common::String open("open");
+ g_lingo->codeFunc(&open, 2); }
+#line 3248 "engines/director/lingo/lingo-gr.cpp"
break;
case 128:
-#line 674 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3252 "engines/director/lingo/lingo-gr.cpp"
+#line 676 "engines/director/lingo/lingo-gr.y"
+ {
+ Common::String open("open");
+ g_lingo->codeFunc(&open, 1); }
+#line 3256 "engines/director/lingo/lingo-gr.cpp"
break;
case 129:
-#line 676 "engines/director/lingo/lingo-gr.y"
+#line 680 "engines/director/lingo/lingo-gr.y"
{
mVar((yyvsp[0].s), kVarGlobal);
delete (yyvsp[0].s); }
-#line 3260 "engines/director/lingo/lingo-gr.cpp"
+#line 3264 "engines/director/lingo/lingo-gr.cpp"
break;
case 130:
-#line 679 "engines/director/lingo/lingo-gr.y"
+#line 683 "engines/director/lingo/lingo-gr.y"
{
mVar((yyvsp[0].s), kVarGlobal);
delete (yyvsp[0].s); }
-#line 3268 "engines/director/lingo/lingo-gr.cpp"
+#line 3272 "engines/director/lingo/lingo-gr.cpp"
break;
case 131:
-#line 683 "engines/director/lingo/lingo-gr.y"
+#line 687 "engines/director/lingo/lingo-gr.y"
{
mVar((yyvsp[0].s), kVarProperty);
delete (yyvsp[0].s); }
-#line 3276 "engines/director/lingo/lingo-gr.cpp"
+#line 3280 "engines/director/lingo/lingo-gr.cpp"
break;
case 132:
-#line 686 "engines/director/lingo/lingo-gr.y"
+#line 690 "engines/director/lingo/lingo-gr.y"
{
mVar((yyvsp[0].s), kVarProperty);
delete (yyvsp[0].s); }
-#line 3284 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
break;
case 133:
-#line 690 "engines/director/lingo/lingo-gr.y"
+#line 694 "engines/director/lingo/lingo-gr.y"
{
mVar((yyvsp[0].s), kVarInstance);
delete (yyvsp[0].s); }
-#line 3292 "engines/director/lingo/lingo-gr.cpp"
+#line 3296 "engines/director/lingo/lingo-gr.cpp"
break;
case 134:
-#line 693 "engines/director/lingo/lingo-gr.y"
+#line 697 "engines/director/lingo/lingo-gr.y"
{
mVar((yyvsp[0].s), kVarInstance);
delete (yyvsp[0].s); }
-#line 3300 "engines/director/lingo/lingo-gr.cpp"
+#line 3304 "engines/director/lingo/lingo-gr.cpp"
break;
case 135:
-#line 704 "engines/director/lingo/lingo-gr.y"
+#line 708 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoloop); }
-#line 3306 "engines/director/lingo/lingo-gr.cpp"
+#line 3310 "engines/director/lingo/lingo-gr.cpp"
break;
case 136:
-#line 705 "engines/director/lingo/lingo-gr.y"
+#line 709 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotonext); }
-#line 3312 "engines/director/lingo/lingo-gr.cpp"
+#line 3316 "engines/director/lingo/lingo-gr.cpp"
break;
case 137:
-#line 706 "engines/director/lingo/lingo-gr.y"
+#line 710 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoprevious); }
-#line 3318 "engines/director/lingo/lingo-gr.cpp"
+#line 3322 "engines/director/lingo/lingo-gr.cpp"
break;
case 138:
-#line 707 "engines/director/lingo/lingo-gr.y"
+#line 711 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_goto); }
-#line 3327 "engines/director/lingo/lingo-gr.cpp"
+#line 3331 "engines/director/lingo/lingo-gr.cpp"
break;
case 139:
-#line 711 "engines/director/lingo/lingo-gr.y"
+#line 715 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_goto); }
-#line 3336 "engines/director/lingo/lingo-gr.cpp"
+#line 3340 "engines/director/lingo/lingo-gr.cpp"
break;
case 140:
-#line 715 "engines/director/lingo/lingo-gr.y"
+#line 719 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_goto); }
-#line 3345 "engines/director/lingo/lingo-gr.cpp"
+#line 3349 "engines/director/lingo/lingo-gr.cpp"
break;
case 143:
-#line 723 "engines/director/lingo/lingo-gr.y"
+#line 727 "engines/director/lingo/lingo-gr.y"
{ // "play #done" is also caught by this
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_play); }
-#line 3354 "engines/director/lingo/lingo-gr.cpp"
+#line 3358 "engines/director/lingo/lingo-gr.cpp"
break;
case 144:
-#line 727 "engines/director/lingo/lingo-gr.y"
+#line 731 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_play); }
-#line 3363 "engines/director/lingo/lingo-gr.cpp"
+#line 3367 "engines/director/lingo/lingo-gr.cpp"
break;
case 145:
-#line 731 "engines/director/lingo/lingo-gr.y"
+#line 735 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_play); }
-#line 3372 "engines/director/lingo/lingo-gr.cpp"
+#line 3376 "engines/director/lingo/lingo-gr.cpp"
break;
case 146:
-#line 735 "engines/director/lingo/lingo-gr.y"
+#line 739 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeSetImmediate(true); }
-#line 3378 "engines/director/lingo/lingo-gr.cpp"
+#line 3382 "engines/director/lingo/lingo-gr.cpp"
break;
case 147:
-#line 735 "engines/director/lingo/lingo-gr.y"
+#line 739 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeSetImmediate(false);
g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
delete (yyvsp[-2].s); }
-#line 3387 "engines/director/lingo/lingo-gr.cpp"
+#line 3391 "engines/director/lingo/lingo-gr.cpp"
break;
case 148:
-#line 765 "engines/director/lingo/lingo-gr.y"
+#line 769 "engines/director/lingo/lingo-gr.y"
{ startDef(); }
-#line 3393 "engines/director/lingo/lingo-gr.cpp"
+#line 3397 "engines/director/lingo/lingo-gr.cpp"
break;
case 149:
-#line 766 "engines/director/lingo/lingo-gr.y"
+#line 770 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_procret);
g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
endDef();
delete (yyvsp[-5].s); }
-#line 3403 "engines/director/lingo/lingo-gr.cpp"
+#line 3407 "engines/director/lingo/lingo-gr.cpp"
break;
case 150:
-#line 771 "engines/director/lingo/lingo-gr.y"
+#line 775 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3409 "engines/director/lingo/lingo-gr.cpp"
+#line 3413 "engines/director/lingo/lingo-gr.cpp"
break;
case 151:
-#line 772 "engines/director/lingo/lingo-gr.y"
+#line 776 "engines/director/lingo/lingo-gr.y"
{ startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3415 "engines/director/lingo/lingo-gr.cpp"
+#line 3419 "engines/director/lingo/lingo-gr.cpp"
break;
case 152:
-#line 773 "engines/director/lingo/lingo-gr.y"
+#line 777 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_procret);
g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
endDef();
delete (yyvsp[-6].s); }
-#line 3425 "engines/director/lingo/lingo-gr.cpp"
+#line 3429 "engines/director/lingo/lingo-gr.cpp"
break;
case 153:
-#line 778 "engines/director/lingo/lingo-gr.y"
+#line 782 "engines/director/lingo/lingo-gr.y"
{ // D3
g_lingo->code1(LC::c_procret);
g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3434,69 +3438,69 @@ yyreduce:
checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
delete (yyvsp[-7].s);
delete (yyvsp[-1].s); }
-#line 3438 "engines/director/lingo/lingo-gr.cpp"
+#line 3442 "engines/director/lingo/lingo-gr.cpp"
break;
case 154:
-#line 786 "engines/director/lingo/lingo-gr.y"
+#line 790 "engines/director/lingo/lingo-gr.y"
{ // D4. No 'end' clause
g_lingo->code1(LC::c_procret);
g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
endDef();
delete (yyvsp[-5].s); }
-#line 3448 "engines/director/lingo/lingo-gr.cpp"
+#line 3452 "engines/director/lingo/lingo-gr.cpp"
break;
case 155:
-#line 792 "engines/director/lingo/lingo-gr.y"
+#line 796 "engines/director/lingo/lingo-gr.y"
{ startDef(); }
-#line 3454 "engines/director/lingo/lingo-gr.cpp"
+#line 3458 "engines/director/lingo/lingo-gr.cpp"
break;
case 156:
-#line 792 "engines/director/lingo/lingo-gr.y"
+#line 796 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 3460 "engines/director/lingo/lingo-gr.cpp"
+#line 3464 "engines/director/lingo/lingo-gr.cpp"
break;
case 157:
-#line 794 "engines/director/lingo/lingo-gr.y"
+#line 798 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3466 "engines/director/lingo/lingo-gr.cpp"
+#line 3470 "engines/director/lingo/lingo-gr.cpp"
break;
case 158:
-#line 795 "engines/director/lingo/lingo-gr.y"
+#line 799 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3472 "engines/director/lingo/lingo-gr.cpp"
+#line 3476 "engines/director/lingo/lingo-gr.cpp"
break;
case 159:
-#line 796 "engines/director/lingo/lingo-gr.y"
+#line 800 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3478 "engines/director/lingo/lingo-gr.cpp"
+#line 3482 "engines/director/lingo/lingo-gr.cpp"
break;
case 161:
-#line 799 "engines/director/lingo/lingo-gr.y"
+#line 803 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3484 "engines/director/lingo/lingo-gr.cpp"
+#line 3488 "engines/director/lingo/lingo-gr.cpp"
break;
case 162:
-#line 800 "engines/director/lingo/lingo-gr.y"
+#line 804 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3490 "engines/director/lingo/lingo-gr.cpp"
+#line 3494 "engines/director/lingo/lingo-gr.cpp"
break;
case 163:
-#line 802 "engines/director/lingo/lingo-gr.y"
+#line 806 "engines/director/lingo/lingo-gr.y"
{ inDef(); }
-#line 3496 "engines/director/lingo/lingo-gr.cpp"
+#line 3500 "engines/director/lingo/lingo-gr.cpp"
break;
case 164:
-#line 804 "engines/director/lingo/lingo-gr.y"
+#line 808 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_call);
g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3504,122 +3508,122 @@ yyreduce:
WRITE_UINT32(&numpar, (yyvsp[0].narg));
g_lingo->code1(numpar);
delete (yyvsp[-1].s); }
-#line 3508 "engines/director/lingo/lingo-gr.cpp"
+#line 3512 "engines/director/lingo/lingo-gr.cpp"
break;
case 165:
-#line 812 "engines/director/lingo/lingo-gr.y"
+#line 816 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3514 "engines/director/lingo/lingo-gr.cpp"
+#line 3518 "engines/director/lingo/lingo-gr.cpp"
break;
case 166:
-#line 813 "engines/director/lingo/lingo-gr.y"
+#line 817 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3520 "engines/director/lingo/lingo-gr.cpp"
+#line 3524 "engines/director/lingo/lingo-gr.cpp"
break;
case 167:
-#line 814 "engines/director/lingo/lingo-gr.y"
+#line 818 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3526 "engines/director/lingo/lingo-gr.cpp"
+#line 3530 "engines/director/lingo/lingo-gr.cpp"
break;
case 168:
-#line 816 "engines/director/lingo/lingo-gr.y"
+#line 820 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3532 "engines/director/lingo/lingo-gr.cpp"
+#line 3536 "engines/director/lingo/lingo-gr.cpp"
break;
case 169:
-#line 817 "engines/director/lingo/lingo-gr.y"
+#line 821 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3538 "engines/director/lingo/lingo-gr.cpp"
+#line 3542 "engines/director/lingo/lingo-gr.cpp"
break;
case 170:
-#line 819 "engines/director/lingo/lingo-gr.y"
+#line 823 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 3544 "engines/director/lingo/lingo-gr.cpp"
+#line 3548 "engines/director/lingo/lingo-gr.cpp"
break;
case 171:
-#line 821 "engines/director/lingo/lingo-gr.y"
+#line 825 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3550 "engines/director/lingo/lingo-gr.cpp"
+#line 3554 "engines/director/lingo/lingo-gr.cpp"
break;
case 172:
-#line 822 "engines/director/lingo/lingo-gr.y"
+#line 826 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3556 "engines/director/lingo/lingo-gr.cpp"
+#line 3560 "engines/director/lingo/lingo-gr.cpp"
break;
case 173:
-#line 823 "engines/director/lingo/lingo-gr.y"
+#line 827 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3562 "engines/director/lingo/lingo-gr.cpp"
+#line 3566 "engines/director/lingo/lingo-gr.cpp"
break;
case 174:
-#line 824 "engines/director/lingo/lingo-gr.y"
+#line 828 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3568 "engines/director/lingo/lingo-gr.cpp"
+#line 3572 "engines/director/lingo/lingo-gr.cpp"
break;
case 175:
-#line 826 "engines/director/lingo/lingo-gr.y"
+#line 830 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3574 "engines/director/lingo/lingo-gr.cpp"
+#line 3578 "engines/director/lingo/lingo-gr.cpp"
break;
case 176:
-#line 827 "engines/director/lingo/lingo-gr.y"
+#line 831 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3580 "engines/director/lingo/lingo-gr.cpp"
+#line 3584 "engines/director/lingo/lingo-gr.cpp"
break;
case 177:
-#line 829 "engines/director/lingo/lingo-gr.y"
+#line 833 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3586 "engines/director/lingo/lingo-gr.cpp"
+#line 3590 "engines/director/lingo/lingo-gr.cpp"
break;
case 178:
-#line 830 "engines/director/lingo/lingo-gr.y"
+#line 834 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3592 "engines/director/lingo/lingo-gr.cpp"
+#line 3596 "engines/director/lingo/lingo-gr.cpp"
break;
case 179:
-#line 832 "engines/director/lingo/lingo-gr.y"
+#line 836 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3601 "engines/director/lingo/lingo-gr.cpp"
+#line 3605 "engines/director/lingo/lingo-gr.cpp"
break;
case 180:
-#line 836 "engines/director/lingo/lingo-gr.y"
+#line 840 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3610 "engines/director/lingo/lingo-gr.cpp"
+#line 3614 "engines/director/lingo/lingo-gr.cpp"
break;
case 181:
-#line 840 "engines/director/lingo/lingo-gr.y"
+#line 844 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3619 "engines/director/lingo/lingo-gr.cpp"
+#line 3623 "engines/director/lingo/lingo-gr.cpp"
break;
-#line 3623 "engines/director/lingo/lingo-gr.cpp"
+#line 3627 "engines/director/lingo/lingo-gr.cpp"
default: break;
}
@@ -3818,7 +3822,7 @@ yyreturn:
return yyresult;
}
-#line 846 "engines/director/lingo/lingo-gr.y"
+#line 850 "engines/director/lingo/lingo-gr.y"
int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 14a5c655e0..7d1f224ddb 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -670,8 +670,12 @@ proc: tPUT expr { g_lingo->code1(LC::c_printtop); }
| BLTIN arglist {
g_lingo->codeFunc($BLTIN, $arglist);
delete $BLTIN; }
- | tOPEN expr tWITH expr { g_lingo->code1(LC::c_open); }
- | tOPEN expr { g_lingo->code2(LC::c_voidpush, LC::c_open); }
+ | tOPEN expr tWITH expr {
+ Common::String open("open");
+ g_lingo->codeFunc(&open, 2); }
+ | tOPEN expr {
+ Common::String open("open");
+ g_lingo->codeFunc(&open, 1); }
globallist: ID {
mVar($ID, kVarGlobal);
Commit: 6e727d58a1972dd3204ae7af58f63c5acea2230e
https://github.com/scummvm/scummvm/commit/6e727d58a1972dd3204ae7af58f63c5acea2230e
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-08T15:21:13-04:00
Commit Message:
DIRECTOR: LINGO: Add missing include
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 9fb5c9a1b7..3f07ca94b6 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -25,6 +25,7 @@
#include "director/director.h"
#include "director/cast.h"
#include "director/castmember.h"
+#include "director/channel.h"
#include "director/movie.h"
#include "director/sound.h"
#include "director/sprite.h"
More information about the Scummvm-git-logs
mailing list