[Scummvm-git-logs] scummvm master -> 1b6185ecdd5c61e2539fb1888d108644959d1913
djsrv
dservilla at gmail.com
Thu Jul 9 18:00:40 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
1b6185ecdd DIRECTOR: LINGO: Implement forget window
Commit: 1b6185ecdd5c61e2539fb1888d108644959d1913
https://github.com/scummvm/scummvm/commit/1b6185ecdd5c61e2539fb1888d108644959d1913
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-09T13:59:08-04:00
Commit Message:
DIRECTOR: LINGO: Implement forget window
Changed paths:
engines/director/lingo/lingo-object.cpp
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 4fa669f444..1e2cc97d1e 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -358,8 +358,31 @@ void LM::m_close(int nargs) {
}
void LM::m_forget(int nargs) {
- g_lingo->printSTUBWithArglist("m_forget", nargs);
- g_lingo->dropStack(nargs);
+ Stage *me = static_cast<Stage *>(g_lingo->_currentMe.u.obj);
+ DatumArray *windowList = g_lingo->_windowList.u.farr;
+
+ uint i;
+ for (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 == me)
+ break;
+ }
+
+ if (i < windowList->size())
+ windowList->remove_at(i);
+
+ // remove me from global vars
+ for (DatumHash::iterator it = g_lingo->_globalvars.begin(); it != g_lingo->_globalvars.end(); ++it) {
+ if (it->_value.type != OBJECT || it->_value.u.obj->getObjType() != kWindowObj)
+ continue;
+
+ Stage *window = static_cast<Stage *>((*windowList)[i].u.obj);
+ if (window == me)
+ g_lingo->_globalvars[it->_key] = 0;
+ }
}
void LM::m_open(int nargs) {
More information about the Scummvm-git-logs
mailing list