aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2016-06-19 13:47:47 +0200
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit4a536c57f1012c0bb4380d84ddc2ee72c3f3d332 (patch)
tree7fe1f322bfd2040d408fe2129a72a671571f09fb
parent238d150f41c23c8682a5c08ba7cfbcff23964bba (diff)
downloadscummvm-rg350-4a536c57f1012c0bb4380d84ddc2ee72c3f3d332.tar.gz
scummvm-rg350-4a536c57f1012c0bb4380d84ddc2ee72c3f3d332.tar.bz2
scummvm-rg350-4a536c57f1012c0bb4380d84ddc2ee72c3f3d332.zip
DIRECTOR: Lingo: Implement func_neg()
-rw-r--r--engines/director/lingo/lingo-funcs.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index c9c14a5c9e..b28e709166 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -206,42 +206,46 @@ void Lingo::func_eval() {
}
void Lingo::func_add() {
- Datum d1, d2;
- d2 = g_lingo->pop();
- d1 = g_lingo->pop();
+ Datum d2 = g_lingo->pop();
+ Datum d1 = g_lingo->pop();
+
d1.val += d2.val;
g_lingo->push(d1);
}
void Lingo::func_sub() {
- Datum d1, d2;
- d2 = g_lingo->pop();
- d1 = g_lingo->pop();
+ Datum d2 = g_lingo->pop();
+ Datum d1 = g_lingo->pop();
+
d1.val -= d2.val;
g_lingo->push(d1);
}
void Lingo::func_mul() {
- Datum d1, d2;
- d2 = g_lingo->pop();
- d1 = g_lingo->pop();
+ Datum d2 = g_lingo->pop();
+ Datum d1 = g_lingo->pop();
+
d1.val *= d2.val;
g_lingo->push(d1);
}
void Lingo::func_div() {
- Datum d1, d2;
- d2 = g_lingo->pop();
+ Datum d2 = g_lingo->pop();
if (d2.val == 0)
error("division by zero");
- d1 = g_lingo->pop();
+ Datum d1 = g_lingo->pop();
+
d1.val /= d2.val;
g_lingo->push(d1);
}
void Lingo::func_negate() {
+ Datum d = g_lingo->pop();
+
+ d.val -= d.val;
+ g_lingo->push(d);
}
void Lingo::func_mci() {