diff options
author | Eugene Sandulenko | 2019-11-01 10:06:04 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-11-01 10:06:04 +0100 |
commit | 5d0206b9c297837fddb038601bdfb42b0fcb8016 (patch) | |
tree | 257aeea1531d25acab80ac94b94768954531d55e /engines/scumm/he | |
parent | 537515e808409d81493e390d6fb2098b0554a271 (diff) | |
download | scummvm-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/scumm/he')
-rw-r--r-- | engines/scumm/he/moonbase/net_main.cpp | 15 |
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); |