[Scummvm-git-logs] scummvm master -> 9c5418d2b687d82f510c255faf95560a9d248b32
rvanlaar
noreply at scummvm.org
Fri Mar 18 21:47:58 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:
9c5418d2b6 DIRECTOR: LINGO: Implement getAt & setAt for RECT
Commit: 9c5418d2b687d82f510c255faf95560a9d248b32
https://github.com/scummvm/scummvm/commit/9c5418d2b687d82f510c255faf95560a9d248b32
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2022-03-18T22:47:35+01:00
Commit Message:
DIRECTOR: LINGO: Implement getAt & setAt for RECT
Rects are handled as lists, with size 4, for getAt and setAt in Director.
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/tests/lists.lingo
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 9b1db5fc535..e27ba8dd59b 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -741,6 +741,7 @@ void LB::b_getAt(int nargs) {
switch (list.type) {
case ARRAY:
+ case RECT:
ARRBOUNDSCHECK(index, list);
g_lingo->push(list.u.farr->arr[index - 1]);
break;
@@ -749,7 +750,7 @@ void LB::b_getAt(int nargs) {
g_lingo->push(list.u.parr->arr[index - 1].v);
break;
default:
- TYPECHECK2(list, ARRAY, PARRAY);
+ TYPECHECK3(list, ARRAY, PARRAY, RECT);
}
}
@@ -974,7 +975,7 @@ void LB::b_setAt(int nargs) {
Datum list = g_lingo->pop();
TYPECHECK2(indexD, INT, FLOAT);
- TYPECHECK2(list, ARRAY, PARRAY);
+ TYPECHECK3(list, ARRAY, PARRAY, RECT);
int index = indexD.asInt();
switch (list.type) {
@@ -992,6 +993,9 @@ void LB::b_setAt(int nargs) {
ARRBOUNDSCHECK(index, list);
list.u.parr->arr[index - 1].v = value;
break;
+ case RECT:
+ ARRBOUNDSCHECK(index, list);
+ list.u.farr->arr[index-1] = value;
default:
break;
}
diff --git a/engines/director/lingo/tests/lists.lingo b/engines/director/lingo/tests/lists.lingo
index 0798182aafb..11524ff29a1 100644
--- a/engines/director/lingo/tests/lists.lingo
+++ b/engines/director/lingo/tests/lists.lingo
@@ -84,3 +84,12 @@ setAt lst,3,5
scummvmAssert(lst = [0,0,5])
setAt lst,2,5
scummvmAssert(lst = [0,5,5])
+
+-- rects
+set rct to rect(0, 0, 100, 100)
+set gA to getAt(rct, 2)
+scummvmAssertEqual(gA, 0)
+set gA to getAt(rct, 3)
+scummvmAssertEqual(gA, 100)
+setAt rct, 2, 20
+scummvmAssertEqual(getAt(rct, 2), 20)
More information about the Scummvm-git-logs
mailing list