[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