[Scummvm-git-logs] scummvm master -> f7c7ca7ac9c228cfcc78f51183e1ce9170b636ed

sev- sev at scummvm.org
Fri Nov 1 18:32:58 CET 2019


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:
f7c7ca7ac9 SCUMM HE: MBC: Implement array receiving as JSON


Commit: f7c7ca7ac9c228cfcc78f51183e1ce9170b636ed
    https://github.com/scummvm/scummvm/commit/f7c7ca7ac9c228cfcc78f51183e1ce9170b636ed
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-11-01T18:32:48+01:00

Commit Message:
SCUMM HE: MBC: Implement array receiving as JSON

Changed paths:
    engines/scumm/he/moonbase/net_main.cpp


diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index fa9505d..22ccdff 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -383,6 +383,8 @@ void Net::remoteSendDataErrorCallback(Networking::ErrorResponse error) {
 }
 
 void Net::remoteSendArray(int typeOfSend, int sendTypeParam, int priority, int arrayIndex) {
+	debug(1, "Net::remoteSendArray(%d, %d, %d, %d)", typeOfSend, sendTypeParam, priority, arrayIndex & ~0x33539000); // PN_RemoteSendArrayCommand
+
 	ScummEngine_v100he::ArrayHeader *ah = (ScummEngine_v100he::ArrayHeader *)_vm->getResourceAddress(rtString, arrayIndex & ~0x33539000);
 
 	Common::String jsonData = Common::String::format(
@@ -408,6 +410,9 @@ void Net::remoteSendArray(int typeOfSend, int sendTypeParam, int priority, int a
 		case ScummEngine_v100he::kDwordArray:
 			data = (int32)READ_LE_UINT32(ah->data + i * 4);
 			break;
+
+		default:
+			error("Net::remoteSendArray(): Unknown array type %d for array %d", FROM_LE_32(ah->type), arrayIndex);
 		}
 
 		jsonData += Common::String::format("%d, ", data);
@@ -419,8 +424,6 @@ void Net::remoteSendArray(int typeOfSend, int sendTypeParam, int priority, int a
 	jsonData += Common::String::format("%d]", ah->data[size - 1]);
 	}
 
-	warning("STUB: Net::remoteSendArray(%d, %d, %d, %d)", typeOfSend, sendTypeParam, priority, arrayIndex & ~0x33539000); // PN_RemoteSendArrayCommand
-
 	remoteSendData(typeOfSend, sendTypeParam, PACKETTYPE_REMOTESENDSCUMMARRAY, jsonData, 0);
 }
 
@@ -581,8 +584,29 @@ bool Net::remoteReceiveData() {
 
 			int32 size = (dim1end - dim1start + 1) * (dim2end - dim2start + 1);
 
-			for (int i = 0; i < size; i++)
-				*data++ = _packetdata->child("data")->child("data")->asArray()[i]->asIntegerNumber();
+			int32 value;
+
+			for (int i = 0; i < size; i++) {
+				value = _packetdata->child("data")->child("data")->asArray()[i]->asIntegerNumber();
+
+				switch (atype) {
+				case ScummEngine_v100he::kByteArray:
+				case ScummEngine_v100he::kStringArray:
+					data[i] = value;
+					break;
+
+				case ScummEngine_v100he::kIntArray:
+					WRITE_LE_UINT16(data + i * 2, value);
+					break;
+
+				case ScummEngine_v100he::kDwordArray:
+					WRITE_LE_UINT32(data + i * 4, value);
+					break;
+
+				default:
+					error("Net::remoteReceiveData(): Unknown array type %d", atype);
+				}
+			}
 
 			memset(_tmpbuffer, 0, 25 * 4);
 			WRITE_UINT32(_tmpbuffer, newArray);





More information about the Scummvm-git-logs mailing list