[Scummvm-git-logs] scummvm master -> cf1011863f06ad01c3a2b21a6b188d2032d73ae6
sev-
sev at scummvm.org
Sun Feb 9 18:51:38 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:
cf1011863f DIRECTOR: Switch Datum array subtype to array of Datum
Commit: cf1011863f06ad01c3a2b21a6b188d2032d73ae6
https://github.com/scummvm/scummvm/commit/cf1011863f06ad01c3a2b21a6b188d2032d73ae6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-09T19:51:04+01:00
Commit Message:
DIRECTOR: Switch Datum array subtype to array of Datum
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.h
engines/director/lingo/lingo-gr.y
engines/director/lingo/lingo.h
engines/director/types.h
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 7635bf9..9dd64a1 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1514,10 +1514,10 @@ void LB::b_point(int nargs) {
x.toFloat();
y.toFloat();
- d.u.farr = new FloatArray;
+ d.u.farr = new DatumArray;
- d.u.farr->push_back(x.u.f);
- d.u.farr->push_back(y.u.f);
+ d.u.farr->push_back(x);
+ d.u.farr->push_back(y);
d.type = POINT;
g_lingo->push(d);
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 29170c9..3eb1a5d 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -218,7 +218,7 @@ void LC::c_printtop(void) {
warning("%s", d.u.s->c_str());
break;
case POINT:
- warning("point(%d, %d)", (int)((*d.u.farr)[0]), (int)((*d.u.farr)[1]));
+ warning("point(%s, %s", (*d.u.farr)[0].toString()->c_str(), (*d.u.farr)[1].toString()->c_str());
break;
case SYMBOL:
warning("%s", d.type2str(true));
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index e497a24..537b61a 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -519,7 +519,7 @@ void Lingo::varAssign(Datum &var, Datum &value) {
sym->u.s = new Common::String(*value.u.s);
delete value.u.s;
} else if (value.type == POINT) {
- sym->u.farr = new FloatArray(*value.u.farr);
+ sym->u.farr = new DatumArray(*value.u.farr);
delete value.u.farr;
} else if (value.type == SYMBOL) {
sym->u.i = value.u.i;
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 43c0ee8..4adff3a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -245,7 +245,7 @@ union YYSTYPE
int e[2]; // Entity + field
int code;
int narg; /* number of arguments */
- Common::Array<double> *arr;
+ Director::DatumArray *arr;
struct {
Common::String *os;
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 57b2b1e..2ce6093 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -149,7 +149,7 @@ union YYSTYPE
int e[2]; // Entity + field
int code;
int narg; /* number of arguments */
- Common::Array<double> *arr;
+ Director::DatumArray *arr;
struct {
Common::String *os;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index e57ec14..18d21aa 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -90,7 +90,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
int e[2]; // Entity + field
int code;
int narg; /* number of arguments */
- Common::Array<double> *arr;
+ Director::DatumArray *arr;
struct {
Common::String *os;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 4e37db9..9471aab 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -57,7 +57,6 @@ typedef void (*inst)(void);
#define ENTITY_INDEX(t,id) ((t) * 100000 + (id))
typedef Common::Array<inst> ScriptData;
-typedef Common::Array<double> FloatArray;
struct FuncDesc {
Common::String name;
@@ -78,7 +77,7 @@ struct Symbol { /* symbol table entry */
void (*func)(); /* OPCODE */
void (*bltin)(int); /* BUILTIN */
Common::String *s; /* STRING */
- FloatArray *farr; /* ARRAY, POINT, RECT */
+ DatumArray *farr; /* ARRAY, POINT, RECT */
} u;
int nargs; /* number of arguments */
int maxArgs; /* maximal number of arguments, for builtins */
@@ -101,7 +100,7 @@ struct Datum { /* interpreter stack type */
double f; /* FLOAT */
Common::String *s; /* STRING */
Symbol *sym;
- FloatArray *farr; /* ARRAY, POINT, RECT */
+ DatumArray *farr; /* ARRAY, POINT, RECT */
} u;
Datum() { u.sym = NULL; type = VOID; }
diff --git a/engines/director/types.h b/engines/director/types.h
index 4a9bcc8..1945500 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -231,6 +231,8 @@ enum TransitionType {
kTransDissolveBits
};
+struct Datum;
+typedef Common::Array<Datum> DatumArray;
const char *scriptType2str(ScriptType scr);
More information about the Scummvm-git-logs
mailing list