From e6d9148061cb863e642ab4b5ce129ee429864adb Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 27 Oct 2019 07:48:06 +0000 Subject: SCUMM HE: Moonbase Commander: simplify looping over network packets --- engines/scumm/he/moonbase/net_main.cpp | 22 +++++++++------------- engines/scumm/he/moonbase/net_main.h | 3 +-- 2 files changed, 10 insertions(+), 15 deletions(-) (limited to 'engines') diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp index 42e475075d..cd25a2291e 100644 --- a/engines/scumm/he/moonbase/net_main.cpp +++ b/engines/scumm/he/moonbase/net_main.cpp @@ -449,11 +449,7 @@ void Net::getProviderName(int providerIndex, char *buffer, int length) { warning("STUB: Net::getProviderName(%d, \"%s\", %d)", providerIndex, buffer, length); // PN_GetProviderName } -int Net::getMessageCount() { - return 0; // FIXME -} - -void Net::remoteReceiveData() { +bool Net::remoteReceiveData() { Networking::PostRequest rq(_serverprefix + "/getpacket", new Common::Callback(this, &Net::remoteReceiveDataCallback), new Common::Callback(this, &Net::remoteReceiveDataErrorCallback)); @@ -470,8 +466,8 @@ void Net::remoteReceiveData() { g_system->delayMillis(5); } - if (_packetsize == -1) - return; + if (!_packetsize) + return false; Common::MemoryReadStream pack(_packbuffer, _packetsize); @@ -544,16 +540,18 @@ void Net::remoteReceiveData() { default: warning("Moonbase: Received unknown network command %d", type); } + + return true; } void Net::remoteReceiveDataCallback(Common::JSONValue *response) { debug(1, "remoteReceiveData: Got: '%s'", response->stringify().c_str()); - if (!response->child("size")->asIntegerNumber()) - return; - _packetsize = response->child("size")->asIntegerNumber(); + if (!_packetsize) + return; + strncpy((char *)_packbuffer, response->child("data")->asString().c_str(), _packetsize); } @@ -569,9 +567,7 @@ void Net::unpackageArray(int arrayId, byte *data, int len) { void Net::doNetworkOnceAFrame(int msecs) { uint32 tickCount = g_system->getMillis() + msecs; - while (getMessageCount()) { - remoteReceiveData(); - + while (remoteReceiveData()) { if (tickCount >= g_system->getMillis()) { break; } diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h index 0f6d547754..3c3acde129 100644 --- a/engines/scumm/he/moonbase/net_main.h +++ b/engines/scumm/he/moonbase/net_main.h @@ -68,8 +68,7 @@ public: void unpackageArray(int arrayId, byte *data, int len); private: - int getMessageCount(); - void remoteReceiveData(); + bool remoteReceiveData(); void createSessionCallback(Common::JSONValue *response); void createSessionErrorCallback(Networking::ErrorResponse error); -- cgit v1.2.3