From 00a59570beca96fbc1f34e6549bbc2343f800440 Mon Sep 17 00:00:00 2001 From: Scott Percival Date: Wed, 5 Feb 2020 22:00:10 +0800 Subject: [PATCH] DIRECTOR: LINGO: Implement c_before and c_after --- engines/director/lingo/lingo-bytecode.cpp | 22 ++++++++++++++++++++++ engines/director/lingo/lingo-code.cpp | 14 ++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp index e27d0938109..0e1b704f924 100644 --- a/engines/director/lingo/lingo-bytecode.cpp +++ b/engines/director/lingo/lingo-bytecode.cpp @@ -259,6 +259,28 @@ void LC::cb_v4assign() { LC::c_assign(); } break; + case 0x26: + // put value after field textVar + { + LB::b_field(1); + Datum field = g_lingo->pop(); + g_lingo->push(field); + LC::c_after(); + g_lingo->push(field); + LC::c_assign(); + } + break; + case 0x36: + // put value before field textVar + { + LB::b_field(1); + Datum field = g_lingo->pop(); + g_lingo->push(field); + LC::c_before(); + g_lingo->push(field); + LC::c_assign(); + } + break; default: warning("cb_v4assign: unknown operator %d", op); break; diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index 33b30166305..50a6fdfdd77 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -566,17 +566,7 @@ void LC::c_ampersand() { } void LC::c_after() { - Datum d2 = g_lingo->pop(); - Datum d1 = g_lingo->pop(); - - d1.toString(); - d2.toString(); - - warning("STUB: c_after"); - - delete d2.u.s; - - g_lingo->push(d1); + LC::c_ampersand(); } void LC::c_before() { @@ -586,7 +576,7 @@ void LC::c_before() { d1.toString(); d2.toString(); - warning("STUB: c_before"); + *d1.u.s = *d2.u.s + *d1.u.s; delete d2.u.s;