diff options
author | Eugene Sandulenko | 2019-10-27 07:48:06 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2019-10-27 19:52:26 +0000 |
commit | e6d9148061cb863e642ab4b5ce129ee429864adb (patch) | |
tree | e01426b91868a97ddc49e3b39ae3aeb9ee3d48f9 /engines | |
parent | d3cdcf05c7ba8f7435ea04c55f752697be197679 (diff) | |
download | scummvm-rg350-e6d9148061cb863e642ab4b5ce129ee429864adb.tar.gz scummvm-rg350-e6d9148061cb863e642ab4b5ce129ee429864adb.tar.bz2 scummvm-rg350-e6d9148061cb863e642ab4b5ce129ee429864adb.zip |
SCUMM HE: Moonbase Commander: simplify looping over network packets
Diffstat (limited to 'engines')
-rw-r--r-- | engines/scumm/he/moonbase/net_main.cpp | 22 | ||||
-rw-r--r-- | engines/scumm/he/moonbase/net_main.h | 3 |
2 files changed, 10 insertions, 15 deletions
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<Net, Common::JSONValue *>(this, &Net::remoteReceiveDataCallback), new Common::Callback<Net, Networking::ErrorResponse>(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); |