[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