[Scummvm-git-logs] scummvm master -> 463495778423589f90362de168fb303a4d57d5d0

sev- noreply at scummvm.org
Mon May 23 22:39:32 UTC 2022


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:
4634957784 DIRECTOR: Implement STUB builtin b_findEmpty


Commit: 463495778423589f90362de168fb303a4d57d5d0
    https://github.com/scummvm/scummvm/commit/463495778423589f90362de168fb303a4d57d5d0
Author: Pragyansh Chaturvedi (r41k0u) (pragyanshchaturvedi18 at gmail.com)
Date: 2022-05-24T00:39:29+02:00

Commit Message:
DIRECTOR: Implement STUB builtin b_findEmpty

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 03d80c49986..e317a16b730 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1810,11 +1810,38 @@ void LB::b_erase(int nargs) {
 }
 
 void LB::b_findEmpty(int nargs) {
-	g_lingo->printSTUBWithArglist("b_findEmpty", nargs);
+	Datum d = g_lingo->pop();
+	uint16  c_start = g_director->getCurrentMovie()->getCast()->_castArrayStart;
+	uint16  c_end = g_director->getCurrentMovie()->getCast()->_castArrayEnd;
+	Common::HashMap<int, CastMember *> *cast = g_director->getCurrentMovie()->getCast()->_loadedCast;
 
-	g_lingo->dropStack(nargs);
+	if (d.type != CASTREF) {
+		warning("Incorrect argument type for findEmpty");
+		return;
+	}
 
-	g_lingo->push(Datum(0));
+	if (d.u.cast->member > c_end) {
+		d.type = INT;
+		g_lingo->push(d);
+		return;
+	}
+
+	if (d.u.cast->member > c_start) {
+		c_start = (uint16) d.u.cast->member;
+	}
+
+	for (uint16 i = c_start; i <= c_end; i++) {
+		if (!cast->contains((int) i) || cast->getVal((int) i)->_type == kCastTypeNull) {
+			d.u.i = i;
+			d.type = INT;
+			g_lingo->push(d);
+			return;
+		}
+	}
+
+	d.type = INT;
+	d.u.i = (int) c_end + 1;
+	g_lingo->push(d);
 }
 
 void LB::b_importFileInto(int nargs) {




More information about the Scummvm-git-logs mailing list