[Scummvm-git-logs] scummvm master -> 3f5479fd1d611418f8818929853efe55bdac7d8c
ysj1173886760
42030331+ysj1173886760 at users.noreply.github.com
Tue Jul 27 12:56:21 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
41d11e05b9 DIRECTOR: implement b_sort
3f5479fd1d DIRECTOR: add comment for b_sort
Commit: 41d11e05b9cdd2d573f3b91ce276d71b0ec298f5
https://github.com/scummvm/scummvm/commit/41d11e05b9cdd2d573f3b91ce276d71b0ec298f5
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-07-27T20:55:59+08:00
Commit Message:
DIRECTOR: implement b_sort
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 a12cb971e2..fd92415bcd 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -959,9 +959,26 @@ void LB::b_setProp(int nargs) {
}
}
+static bool sortArrayHelper(const Datum &lhs, const Datum &rhs) {
+ return lhs.asInt() < rhs.asInt();
+}
+
+static bool sortPArrayHelper(const PCell &lhs, const PCell &rhs) {
+ return lhs.p.asString() < rhs.p.asString();
+}
+
void LB::b_sort(int nargs) {
- g_lingo->printSTUBWithArglist("b_sort", nargs);
- g_lingo->dropStack(nargs);
+ Datum list = g_lingo->pop();
+
+ if (list.type == ARRAY) {
+ Common::sort(list.u.farr->begin(), list.u.farr->end(), sortArrayHelper);
+
+ } else if (list.type == PARRAY) {
+ Common::sort(list.u.parr->begin(), list.u.parr->end(), sortPArrayHelper);
+
+ } else {
+ warning("LB::b_sort can not handle argument of type %s", list.type2str());
+ }
}
Commit: 3f5479fd1d611418f8818929853efe55bdac7d8c
https://github.com/scummvm/scummvm/commit/3f5479fd1d611418f8818929853efe55bdac7d8c
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-07-27T20:55:59+08:00
Commit Message:
DIRECTOR: add comment for b_sort
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 fd92415bcd..666c1279ff 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -968,6 +968,10 @@ static bool sortPArrayHelper(const PCell &lhs, const PCell &rhs) {
}
void LB::b_sort(int nargs) {
+ // in D4 manual, p266. linear list is sorted by values
+ // property list is sorted alphabetically by properties
+ // once the list is sorted, it maintains it's sort order even when we add new variables using add command
+ // see b_append to get more details.
Datum list = g_lingo->pop();
if (list.type == ARRAY) {
More information about the Scummvm-git-logs
mailing list