[Scummvm-git-logs] scummvm master -> eba92cab096a0b7614e268eb76173a30982155df
rvanlaar
roland at rolandvanlaar.nl
Sat Aug 1 10:26:56 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:
eba92cab09 DIRECTOR: LINGO: Implement kTheItemDelimiter
Commit: eba92cab096a0b7614e268eb76173a30982155df
https://github.com/scummvm/scummvm/commit/eba92cab096a0b7614e268eb76173a30982155df
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2020-08-01T12:22:42+02:00
Commit Message:
DIRECTOR: LINGO: Implement kTheItemDelimiter
The itemDelimiter is used to split the string in the
function itemOf and itemToOf.
It can be empty, i.e. no splitting is required,
or it can be one char.
Changed paths:
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
engines/director/lingo/tests/the.lingo
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 87cd8847c3..97bb351a49 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -452,7 +452,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.u.i = 1; // We always allow it in ScummVM
break;
case kTheItemDelimiter:
- getTheEntitySTUB(kTheItemDelimiter);
+ d.type = STRING;
+ d.u.s = new Common::String(g_lingo->_itemDelimiter);
break;
case kTheKey:
d.type = STRING;
@@ -899,7 +900,10 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
// No op in ScummVM. We always allow it
break;
case kTheItemDelimiter:
- setTheEntitySTUB(kTheItemDelimiter);
+ if (d.asString().size() == 0)
+ g_lingo->_itemDelimiter = *"";
+ else
+ g_lingo->_itemDelimiter = d.asString()[0];
break;
case kTheKeyDownScript:
_vm->getCurrentMovie()->setPrimaryEventHandler(kEventKeyDown, d.asString());
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 3a218b0f33..9c1b2a9215 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -169,6 +169,9 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
_localvars = NULL;
+ //kTheEntities
+ _itemDelimiter = ',';
+
// events
_passEvent = false;
_perFrameHook = Datum();
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 7fbc73d960..d6535a50eb 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -337,6 +337,9 @@ public:
const char *entity2str(int id);
const char *field2str(int id);
+ // global kTheEntity
+ char _itemDelimiter;
+
Datum getTheEntity(int entity, Datum &id, int field);
void setTheEntity(int entity, Datum &id, int field, Datum &d);
Datum getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId);
diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 888f579aa7..5fece39b31 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -59,3 +59,13 @@ put 5 into field the number of cast "MasterList"
set the text of field 1 = "Hello"
set gMarkerName = the length of h + 2
+
+set save = the itemDelimiter
+scummvmAssert(save=",")
+set the itemDelimiter = ":"
+scummvmAssert(the itemDelimiter=":")
+set the itemDelimiter = ":,"
+scummvmAssert(the itemDelimiter=":")
+set the itemDelimiter = ""
+scummvmAssert(the itemDelimiter="")
+set the itemDelimiter = save
More information about the Scummvm-git-logs
mailing list