[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