aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2019-11-01 10:06:04 +0100
committerEugene Sandulenko2019-11-01 10:06:04 +0100
commit5d0206b9c297837fddb038601bdfb42b0fcb8016 (patch)
tree257aeea1531d25acab80ac94b94768954531d55e /engines
parent537515e808409d81493e390d6fb2098b0554a271 (diff)
downloadscummvm-rg350-5d0206b9c297837fddb038601bdfb42b0fcb8016.tar.gz
scummvm-rg350-5d0206b9c297837fddb038601bdfb42b0fcb8016.tar.bz2
scummvm-rg350-5d0206b9c297837fddb038601bdfb42b0fcb8016.zip
SCUMM HE: MBC: Read arrays from JSON upon receiving
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/he/moonbase/net_main.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 4df7dd6075..d4ad67a977 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -548,7 +548,20 @@ bool Net::remoteReceiveData() {
// and unpack it into an scumm array :-)
newArray = _vm->findFreeArrayId();
- //unpackageArray(newArray, _packbuffer, datalen);
+
+ int dim1start = _packetdata->child("data")->child("dim1start")->asIntegerNumber();
+ int dim1end = _packetdata->child("data")->child("dim1end")->asIntegerNumber();
+ int dim2start = _packetdata->child("data")->child("dim2start")->asIntegerNumber();
+ int dim2end = _packetdata->child("data")->child("dim2end")->asIntegerNumber();
+ int atype = _packetdata->child("data")->child("type")->asIntegerNumber();
+
+ byte *data = _vm->defineArray(newArray, atype, dim2start, dim2end, dim1start, dim1end);
+
+ int32 size = (dim1end - dim1start + 1) * (dim2end - dim2start + 1);
+
+ for (int i = 0; i < size; i++)
+ *data++ = _packetdata->child("data")->child("data")->asArray()[i]->asIntegerNumber();
+
memset(_tmpbuffer, 0, 25 * 4);
WRITE_UINT32(_tmpbuffer, newArray);