[Scummvm-cvs-logs] scummvm master -> 963826ca6f350783e2fd0a2ca6bdb9f3a5222d52

sev- sev at scummvm.org
Sat Aug 13 12:41:31 CEST 2016


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:
fb5c38c9ed DIRECTOR: Lingo: Implement charToNum, added stubs for constrainH/V functions
963826ca6f DIRECTOR: Lingo: Simplified Datum constants pushing


Commit: fb5c38c9edd004d32b8ef6da1bfa444777283f05
    https://github.com/scummvm/scummvm/commit/fb5c38c9edd004d32b8ef6da1bfa444777283f05
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-13T12:41:22+02:00

Commit Message:
DIRECTOR: Lingo: Implement charToNum, added stubs for constrainH/V functions

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo.h



diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index de82956..9f80de6 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -46,9 +46,10 @@ static struct BuiltinProto {
 	{ "sqrt",	Lingo::b_sqrt,		1, 1, true },	// D2
 	{ "tan",	Lingo::b_tan,		1, 1, true },	// 		D4
 	// String
-	{ "chars",	Lingo::b_chars,		3, 3, true },	// D2
-	{ "length",	Lingo::b_length,	1, 1, true },	// D2
-	{ "string",	Lingo::b_string,	1, 1, true },	// D2
+	{ "chars",		Lingo::b_chars,		3, 3, true },	// D2
+	{ "charToNum",	Lingo::b_charToNum,	1, 1, true },	// D2
+	{ "length",		Lingo::b_length,	1, 1, true },	// D2
+	{ "string",		Lingo::b_string,	1, 1, true },	// D2
 	// Files
 	{ "closeDA",	 	Lingo::b_closeDA, 		0, 0, false },	// D2
 	{ "closeResFile",	Lingo::b_closeResFile,	0, 1, false },	// D2
@@ -87,6 +88,8 @@ static struct BuiltinProto {
 	{ "showGlobals",	Lingo::b_showGlobals,	0, 0, false },	// D2
 	{ "showLocals",		Lingo::b_showLocals,	0, 0, false },	// D2
 	// Score
+	{ "constrainH",		Lingo::b_constrainH,	2, 2, true },	// D2
+	{ "constrainV",		Lingo::b_constrainV,	2, 2, true },	// D2
 	{ "editableText",	Lingo::b_editableText,	0, 0, false },	// D2
 		// go													// D2
 	{ "installMenu",	Lingo::b_installMenu,	1, 1, false },	// D2
@@ -300,6 +303,20 @@ void Lingo::b_chars(int nargs) {
 	g_lingo->push(s);
 }
 
+void Lingo::b_charToNum(int nargs) {
+	Datum d = g_lingo->pop();
+
+	if (d.type != STRING)
+		error("Incorrect type for 'charToNum' function: %s", d.type2str());
+
+	byte chr = d.u.s->c_str()[0];
+	delete d.u.s;
+
+	d.u.i = chr;
+	d.type = INT;
+	g_lingo->push(d);
+}
+
 void Lingo::b_length(int nargs) {
 	Datum d = g_lingo->pop();
 
@@ -496,8 +513,24 @@ void Lingo::b_showLocals(int nargs) {
 ///////////////////
 // Score
 ///////////////////
-void Lingo::b_updateStage(int nargs) {
-	warning("STUB: b_updateStage");
+void Lingo::b_constrainH(int nargs) {
+	Datum num = g_lingo->pop();
+	Datum sprite = g_lingo->pop();
+
+	num.toInt();
+	sprite.toInt();
+
+	warning("STUB: b_constrainH(%d, %d)", sprite.u.i, num.u.i);
+}
+
+void Lingo::b_constrainV(int nargs) {
+	Datum num = g_lingo->pop();
+	Datum sprite = g_lingo->pop();
+
+	num.toInt();
+	sprite.toInt();
+
+	warning("STUB: b_constrainV(%d, %d)", sprite.u.i, num.u.i);
 }
 
 void Lingo::b_editableText(int nargs) {
@@ -559,6 +592,10 @@ void Lingo::b_zoomBox(int nargs) {
 	g_lingo->dropStack(nargs);
 }
 
+void Lingo::b_updateStage(int nargs) {
+	warning("STUB: b_updateStage");
+}
+
 
 
 ///////////////////
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 0d004a0..b4244e8 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -264,21 +264,23 @@ public:
 
 	static void b_abs(int nargs);
 	static void b_atan(int nargs);
-	static void b_chars(int nargs);
 	static void b_cos(int nargs);
 	static void b_exp(int nargs);
 	static void b_float(int nargs);
 	static void b_integer(int nargs);
-	static void b_length(int nargs);
 	static void b_log(int nargs);
 	static void b_pi(int nargs);
 	static void b_power(int nargs);
 	static void b_random(int nargs);
 	static void b_sin(int nargs);
 	static void b_sqrt(int nargs);
-	static void b_string(int nargs);
 	static void b_tan(int nargs);
 
+	static void b_chars(int nargs);
+	static void b_charToNum(int nargs);
+	static void b_length(int nargs);
+	static void b_string(int nargs);
+
 	static void b_ilk(int nargs);
 	static void b_alert(int nargs);
 	static void b_cursor(int nargs);
@@ -286,6 +288,8 @@ public:
 	static void b_showGlobals(int nargs);
 	static void b_showLocals(int nargs);
 
+	static void b_constrainH(int nargs);
+	static void b_constrainV(int nargs);
 	static void b_editableText(int nargs);
 	static void b_installMenu(int nargs);
 	static void b_updateStage(int nargs);


Commit: 963826ca6f350783e2fd0a2ca6bdb9f3a5222d52
    https://github.com/scummvm/scummvm/commit/963826ca6f350783e2fd0a2ca6bdb9f3a5222d52
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-13T12:41:22+02:00

Commit Message:
DIRECTOR: Lingo: Simplified Datum constants pushing

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo.h



diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 9f80de6..05553fe 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -521,6 +521,8 @@ void Lingo::b_constrainH(int nargs) {
 	sprite.toInt();
 
 	warning("STUB: b_constrainH(%d, %d)", sprite.u.i, num.u.i);
+
+	g_lingo->push(Datum(0));
 }
 
 void Lingo::b_constrainV(int nargs) {
@@ -531,6 +533,8 @@ void Lingo::b_constrainV(int nargs) {
 	sprite.toInt();
 
 	warning("STUB: b_constrainV(%d, %d)", sprite.u.i, num.u.i);
+
+	g_lingo->push(Datum(0));
 }
 
 void Lingo::b_editableText(int nargs) {
@@ -647,75 +651,35 @@ void Lingo::b_mciwait(int nargs) {
 // Constants
 ///////////////////
 void Lingo::b_backspace(int nargs) {
-	Datum d;
-
-	d.type = STRING;
-	d.u.s = new Common::String("\b");
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String("\b")));
 }
 
 void Lingo::b_empty(int nargs) {
-	Datum d;
-
-	d.type = STRING;
-	d.u.s = new Common::String("");
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String("")));
 }
 
 void Lingo::b_enter(int nargs) {
-	Datum d;
-
-	d.type = STRING;
-	d.u.s = new Common::String("\n");
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String("\n")));
 }
 
 void Lingo::b_false(int nargs) {
-	Datum d;
-
-	d.type = INT;
-	d.u.i = 0;
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(0));
 }
 
 void Lingo::b_quote(int nargs) {
-	Datum d;
-
-	d.type = STRING;
-	d.u.s = new Common::String("\"");
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String("\"")));
 }
 
 void Lingo::b_return(int nargs) {
-	Datum d;
-
-	d.type = STRING;
-	d.u.s = new Common::String("\r");
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String("\r")));
 }
 
 void Lingo::b_tab(int nargs) {
-	Datum d;
-
-	d.type = STRING;
-	d.u.s = new Common::String("\t");
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String("\t")));
 }
 
 void Lingo::b_true(int nargs) {
-	Datum d;
-
-	d.type = INT;
-	d.u.i = 1;
-
-	g_lingo->push(d);
+	g_lingo->push(Datum(1));
 }
 
 ///////////////////
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 646a931..6072977 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -140,13 +140,10 @@ void Lingo::c_fconstpush() {
 }
 
 void Lingo::c_stringpush() {
-	Datum d;
 	char *s = (char *)&(*g_lingo->_currentScript)[g_lingo->_pc];
 	g_lingo->_pc += g_lingo->calcStringAlignment(s);
 
-	d.u.s = new Common::String(s);
-	d.type = STRING;
-	g_lingo->push(d);
+	g_lingo->push(Datum(new Common::String(s)));
 }
 
 void Lingo::c_varpush() {
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index b4244e8..a8b8c04 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -111,6 +111,9 @@ struct Datum {	/* interpreter stack type */
 	} u;
 
 	Datum() { u.sym = NULL; type = VOID; }
+	Datum(int val) { u.i = val; type = INT; }
+	Datum(double val) { u.f = val; type = FLOAT; }
+	Datum(Common::String *val) { u.s = val; type = STRING; }
 
 	double toFloat();
 	int toInt();






More information about the Scummvm-git-logs mailing list